【发布时间】:2016-12-20 15:05:16
【问题描述】:
我正在尝试以与rbind() 类似的方式在 R 中组合多个 data.frame()s,但是当创建新的 data.frame() 时,我想知道原始 data.frame()s 中的哪一个数据来自。
例如,如果我有以下数据:
右眼
Vision Colour Prescription
0.30 blue -1.00
-0.10 blue +1.50
(etc) (etc) (etc)
左眼
Vision Colour Prescription
0.00 blue +1.00
0.10 brown -2.50
(etc) (etc) (etc)
...我想最终得到一个如下所示的 data.frame():
Vision Colour Prescription Eye
0.30 blue -1.00 Right
-0.10 blue +1.50 Right
0.00 blue +1.00 Left
0.10 brown -2.50 Left
melt() 将数据折叠为 long 格式,这是我不想要的。使用rbind() 并不能提供关于数据最初来自何处的任何线索。我需要做的是创建引用原始数据源的额外列(即上面示例中的right 和left)。
我知道这可以通过在每个原始 data.frame()s 中添加一个“眼睛”列然后使用 rbind() 来实现,但我想知道是否有更简洁的解决方案可用?
【问题讨论】:
-
您可以在
bind_rows()中使用.id参数,来自dplyr-bind_rows(df1, df2, .id = "id") -
仅供参考,最好制作可重复的数据,以便回答者可以简单地复制粘贴(以便更轻松地测试潜在的解决方案)。一些指导:stackoverflow.com/questions/5963269/… 例如,请参阅下面的 allinr 的答案,尽管它可能应该使用
set.seed。