【发布时间】:2015-06-11 13:21:57
【问题描述】:
我有以下数据框,具有不同的行长:
myvar <- as.data.frame(rbind(c("Walter","NA","NA","NA","NA"),
c("Walter","NA","NA","NA","NA"),
c("Walter","Jesse","NA","NA","NA"),
c("Gus","Tuco","Mike","NA","NA"),
c("Gus","Mike","Hank","Saul","Flynn")))
ID <- as.factor(c(1:5))
data.frame(ID,myvar)
ID V1 V2 V3 V4 V5
1 Walter NA NA NA NA
2 Walter NA NA NA NA
3 Walter Jesse NA NA NA
4 Gus Tuco Mike NA NA
5 Gus Mike Hank Saul Flynn
我的目标是将此数据框转换为两列数据框。第一列是 ID,另一列是角色名称。请注意,ID 必须与字符最初放置的行相对应。我期待以下结果:
ID V
1 Walter
2 Walter
3 Walter
3 Jesse
4 Gus
4 Tuco
4 Mike
5 Gus
5 Mike
5 Hank
5 Saul
5 Flynn
我试过 dcast {reshape2} 但它没有返回我需要的东西。值得注意的是,我的原始数据框很大。有小费吗?干杯。
【问题讨论】:
-
和
dcast和你想要的相反,就是从长到宽 -
不要使用 data.frame(cbind(,,,)) 或 data.frame(rbind)。坏事会发生。
-
对不起 NA 作为字符。我的错。不过谢谢大家的回答!
标签: r multiple-columns reshape