尝试简化庞大且冗余的数据集,并希望您帮助移动单元格,以便根据第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
我希望这不是太模糊,但我会在收到回复通知后立即更新此问题。
提前致谢!
答案 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')