【问题标题】:Practice Exercise on tidyr Functions [closed]tidyr 函数练习
【发布时间】:2019-08-19 14:42:09
【问题描述】:

使用 first.df 数据框,通过使用 separate() 函数将 DoB 列数据分成 3 个新列 - 日期、月份、年份。我尝试了最后一行,但它没有给出预期的结果。

fname <- c("Martina", "Monica", "Stan", "Oscar")
lname <- c("Welch", "Sobers", "Griffith", "Williams")
DoB <- c("1-Oct-1980", "2-Nov-1982", "13-Dec-1979", "27-Jan-1988")

first.df <- data.frame(fname,lname,DoB)
print(first.df)

separate(first.df,DoB,c('date','month','year'),sep = '-')

【问题讨论】:

  • 您的结果有什么问题?我在我的机器上运行了你的代码,它看起来是正确的。
  • 日期应该包含DoB值而不是日期
  • 为我工作。确保加载 tidyr 并且没有加载其他 separate 函数。 “没有给出想要的结果”根本没有帮助...... 1. 想要的结果是什么? 2. 你得到了什么?
  • 试试这个:separate(first.df,DoB,c(NA,'month','year'),sep = '-', remove=FALSE)
  • 是的,它正在工作@CaioBrighenti

标签: r dataframe tidyr


【解决方案1】:

将我的评论移至实际答案。

要保留日期列,您需要添加remove = FALSE 参数,并丢弃其中一个分隔列,只需添加NA 而不是列名。那么正确的命令是

separate(first.df,DoB,c(NA,'month','year'),sep = '-', remove=FALSE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多