【问题标题】:Add rows for dataframe based on column根据列为数据框添加行
【发布时间】:2017-08-31 12:48:18
【问题描述】:

我有数据框

mydf <- data.frame(userid = c("1"),gender = c("boy girl boy"), dob = c("25-Mar-2016 02-Nov-2013 12-Nov-2014") )

我需要像这样添加和拆分

                userid gender dob
            1      1    boy 25-Mar-2016
            2      1   girl 02-Nov-2013
            3      1    boy 12-Nov-2014

任何帮助将不胜感激。谢谢

【问题讨论】:

  • library(dplyr); mydf %&gt;% mutate_at(vars(-userid), funs(strsplit(as.character(.), ' '))) %&gt;% unnest()
  • 谢谢索托斯。真的很有帮助!
  • data.table 更简单...setDT(df)[, lapply(.SD, function(i) unlist(strsplit(i, ' ')))]

标签: r dataframe split


【解决方案1】:

我们可以用空格分割第二列和第三列,append 'userid' 列与list 并转换为data.frame

lst <- lapply(mydf[-1], function(x) unlist(strsplit(as.character(x), " ")))
cbind(userid = mydf[,1], data.frame(lst, stringsAsFactors= FALSE))
#  userid gender         dob
#1      1    boy 25-Mar-2016
#2      1   girl 02-Nov-2013
#3      1    boy 12-Nov-2014

【讨论】:

  • 据我了解,拆分数据的用户 ID 必须相同。
  • 谢谢阿克伦。真的很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 2020-04-27
  • 2020-02-24
  • 1970-01-01
相关资源
最近更新 更多