将数据帧的不同行转换为R中的单个行

时间:2011-12-13 15:29:20

标签: r row dataframe pasting

我有一个如下所示的数据集:

CATA 1 10101
CATA 2 11101
CATA 3 10011
CATB 1 10100
CATB 2 11100
CATB 3 10011

我希望将这些不同的行组合成一个长行,如下所示:

CATA 101011110110011
CATB 101001110010011

我已尝试使用melt()然后使用dcast(),但它似乎不起作用。有没有人有一些简单的代码来做到这一点?

2 个答案:

答案 0 :(得分:7)

查看paste命令,特别是collapse参数。目前尚不清楚如果/当你对第一列有不同的值时会发生什么,所以我不敢冒险猜测。如果你遇到困难,请更新你的问题。

dat <- data.frame(V1 = "CATA", V2 = 1:3, V3 = c(10101, 11101, 10011))
paste(dat$V3, collapse= "")
[1] "101011110110011"

请注意,您可能希望先将数据转换为字符,以防止修剪前导零。

编辑:解决第一列的多个值

使用plyr的{​​{1}}函数,该函数需要data.frame作为输入和分组变量。然后,我们使用与之前相同的ddply技巧以及paste()

summarize()

答案 1 :(得分:0)

假设V1 dat中的所有可能元素都已知,

elements <- c("CATA","CATB","CATC")
i <- 1
final_list <- c()
while (i <= length(elements)){
k <- grep(elements[i], dat$V1, ignore.case = FALSE, fixed = TRUE, value = FALSE)
m <- paste(dat$V1[k[1]], " ", paste(dat[k,3], collapse=""), sep="")
final_list <- c(final_list,m)
i=i+1
}

@Chase答案要好得多!