【发布时间】:2016-10-20 03:57:20
【问题描述】:
我有一个地球化学数据集,它有 50 列和 16000 行。我需要连接由Sample_ID 分组的Field_Notes 列中的行中的数据。我曾尝试使用有效的聚合函数,但我最终只得到了这两个列的子集并删除了重复项。如果有人有任何建议,我将不胜感激。
我的数据如下所示:
Sampe_ID Year Alt_Min Field_Notes X
1 97PQQT007 1997 Fe-Carb qtz sweel 2
2 97PQQT007 1997 Fe-Carb v. tr 2
3 97PQQT014 1997 <NA> qtz vn in bslt 15
4 97PQQT014 1997 <NA> 1-2% py,cpy 15
5 97PQQT006 1997 Fe-Carb qtz vn 2
6 97PQQT004 1997 Fe-Carb qtz vn 1
7 97PQQT004 1997 Fe-Carb none 1
但应该是这样的:
Sampe_ID Year Alt_Min Field_Notes X
1 97PQQT007 1997 Fe-Carb qtz sweel, v. tr 2
2 97PQQT007 1997 Fe-Carb qtz sweel, v. tr 2
3 97PQQT014 1997 <NA> qtz vn in bslt, 1-2% py,cpy 15
4 97PQQT014 1997 <NA> qtz vn in bslt, 1-2% py,cpy 15
5 97PQQT006 1997 Fe-Carb qtz vn 2
6 97PQQT004 1997 Fe-Carb qtz vn, none 1
7 97PQQT004 1997 Fe-Carb qtz vn, none 1
这是一个可重现的数据框:
geochem <- data.frame(Sample_ID= c(1,1,2,2,3,4,4), Year = rep(1997, 7), Alt_Min = c(rep("Fe-Carb",2), rep(NA,2), rep("Fe-Carb",3)), Field_Notes = c("qtz sweel", "v. tr", "qtz vn in bslt", "1-2% py,cpy", "qtz vn", "qtz vn", "none"), x = c(2,2,15,15,2,1,1))
【问题讨论】:
-
尝试使用
ave。可能是df$newVar <- ave(df$Field_Notes, df$Sampe_ID, FUN=c)或paste而不是c。 -
使用
data.table包:setDT(df)[, Field_Notes := toString(Field_Notes), by = Sample_ID]或使用dplyr:df %>% group_by(Sample_ID) %>% mutate(Field_Notes = toString(Field_Notes)) -
感谢您的帮助。我已经发布了一个可重现的数据框,如果我发布不正确,我深表歉意。我是这里的新手!我已经尝试过你的建议,但没有运气。我一直在努力寻找这个问题的答案。
标签: r