【发布时间】:2016-01-20 06:16:09
【问题描述】:
我还有一个目前无法掌握的棘手任务。它处理 R 中的数据框。
假设我有一个看起来像这样的数据框:
original = data.frame(Male = c(rep(1,3),rep(2,4),rep(3,2)),
SongNumber = c(1,2,3,1,2,3,4,1,2),
SongType = c("16a","16b","17a","24a","24b","25d","24f","5e","5e"),
Start = c(0.5,16.1,24.2,0.9,10.1,18.9,0.7,0.6,12.2),
RecordFile = c(rep("A1",3),rep("B1",3),"B2",rep("C1",2)))
original
以及另一个包含每种歌曲类型的特定音节顺序的数据框:
additional = data.frame(SongType = c("16a","16b","17a","24a"),
Syll1 = c(4,4,3,16),
Syll2 = c(4,4,3,16),
Syll3 = c(84,84,3,3),
Syll4 = c(3,3,3,16),
Syll5 = c(16,16,3,3),
Syll6 = c(16,16,NA,4),
Syll7 = c(NA,16,NA,NA),
Syll8 = c(NA,16,NA,NA),
Syll9 = c(NA,3,NA,NA),
Syll10 = c(NA,1,NA,NA))
additional
我现在想要将音节顺序作为列插入前一个数据框中。最终结果应如下所示:
aim = data.frame(Male = c(rep(1,21),rep(2,9),rep(3,2)),
SongNumber = c(rep(1,6),rep(2,10),rep(3,5),rep(1,6),2,3,4,1,2),
SongType = c(rep("16a",6),rep("16b",10),rep("17a",5),rep("24a",6),"24b","25d",
"24f","5e","5e"),
Start = c(rep(0.5,6),rep(16.1,10),rep(24.2,5),rep(0.9,6),10.1,18.9,0.7,0.6,
12.2),
RecordFile = c(rep("A1",21),rep("B1",8),"B2",rep("C1",2)),
SyllOrder = c(4,4,84,3,16,16,4,4,84,3,16,16,16,16,3,1,3,3,3,3,3,16,16,3,16,3,4,
NA,NA,NA,NA,NA))
aim
到目前为止,我还没有看到诸如合并之类的功能如何提供帮助:合并仅基于两个数据框之间的公共列将 dataframe2 的列添加到 dataframe1。它不会强制 dataframe1 相应地添加行!
【问题讨论】:
-
好吧,@Thierry 提供的首先将
additional转换为长格式的答案在问题[如何加入(合并)数据帧(内、外、左、右)?]