我有一个包含多个数据的数据框
Key A B C
1 1 2 3
1 4 6 8
1 3 2 1
我需要将这些数据与相同的密钥合并为一行,就像这样
Key A1 B1 C1 A2 B2 C2 A3 B3 C3
1 1 2 3 4 6 8 3 2 1
有没有简单的方法来获得我需要的结果。
答案 0 :(得分:-1)
如果这只是一组'密钥',则一个选项是使用base R
。我们转置(t
)除第一列(df[-1]
)之外的数据集,连接到vector
,转换为data.frme
和cbind
第一个元素第一栏。
res <- cbind(df1[1,1], as.data.frame.list(c(t(df1[-1]))))
names(res) <- c(names(df1)[1] ,make.unique(rep(names(df1)[-1],3)))
res
# Key A B C A.1 B.1 C.1 A.2 B.2 C.2
#1 1 1 2 3 4 6 8 3 2 1
如果有很多关键词,请使用data.table
即开发版v1.9.7
。元素
library(data.table)
dcast(setDT(df1), Key~rowid(Key), value.var = c("A", "B", "C"),sep="")
# Key A1 A2 A3 B1 B2 B3 C1 C2 C3
#1: 1 1 4 3 2 6 2 3 8 1
如果我们有data.table
版本&lt; v1.9.7,我们需要创建按&#39; Key&#39;
dcast(setDT(df1)[, rn := 1:.N , Key], Key ~rn, value.var = c("A", "B", "C"),sep="")
# Key A1 A2 A3 B1 B2 B3 C1 C2 C3
#1: 1 1 4 3 2 6 2 3 8 1