我有一个data.frame,其中有一个列,其中包含一个值列表:
d <- data.frame(id=1:2, parent=c("Jon", "Mark"))
d$children <- list(c("Mary", "James"), c("Greta", "Sally"))如何将此data.frame转换为以下结构:
target_df <- data.frame(id=1:4, parent=c("Jon", "Jon","Mark", "Mark"), children = c("Mary", "James","Greta", "Sally"))发布于 2018-06-21 13:20:52
您应该使用unnest从tidyr或者您可以映射的tidyverse,对不起,之前,我已经映射了tidyverse .Rprofile文件。不管怎样,
library(tidyverse) #or map library(tidyr) whatever suits you
d %>%
unnest(children) %>%
mutate(id = 1:row_number()) #You may not want to run this if you want to keep your original id此外,在基R方法中:
d_new <- do.call('rbind', do.call('Map', c(data.frame, d)))同样,要重置id,我们必须使用1:nrow(d)
d_new$id <- 1:nrow(d) #This may not be required if you don't want to reset your id谢谢大家的评论,我们都欢迎他们,是的,我不知所措。感谢罗纳克·沙阿,@r2evans
https://stackoverflow.com/questions/50969565
复制相似问题