按组值合并行

时间:2015-09-11 23:54:54

标签: r grouping rows

尝试简化庞大且冗余的数据集,并希望您帮助移动单元格,以便根据第1列中的值为每一行提供不同的“组”,并为每个匹配的唯一OLD行单元/元素添加列那个群体价值。见下文。

我有什么:

col1 col2
1    a
1    b
1    c
1    d
2    a
2    c
2    d
2    e
3    a
3    b
3    d
3    e

我想要的是什么:

col1 col2 col3 col4 col5 col6
1    a    b    c    d    N/A
2    a    N/A  c    d    e
3    a    b    N/A  d    e 

我希望这不是太模糊,但我会在收到回复通知后立即更新此问题。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我们可以使用dcast中的library(reshape2)来转换“长”字样。广泛的'格式。默认情况下,它将采用value.var='col2'。如果有更多列,我们可以明确指定value.var

library(reshape2)
dcast(df1, col1~ factor(col2, labels=paste0('col', 2:6)))
#  col1 col2 col3 col4 col5 col6
#1    1    a    b    c    d <NA>
#2    2    a <NA>    c    d    e
#3    3    a    b <NA>    d    e

答案 1 :(得分:0)

以下是使用reshape包{/ 1}}的另一种方法,

stats

输出:

x<-data.frame(col1 = c(1,1,1,1,2,2,2,2,3,3,3,3), 
col2 = c('a','b','c','d','a','c','d', 'e', 'a', 'b', 'd', 'e'))

x<-reshape(x, v.names="col2", idvar="col1", timevar="col2", direction="wide")
names(x)<-c('col1', 'col2', 'col3', 'col4', 'col5', 'col6')