所以——我正在使用一个 df,它有这些由 id 索引的重复观察组,如下所示:
id | x1 | x2 | y1 | y2
1 a b c 2
1 a b d 3
1 a b e 4
2 ...
2 ...
...
即,除了 y1 和 y2 之外,每组中的所有变量都是相同的(一般来说,y2“修改”y1。)我在这里列出的所有这些变量都是因子。我想做的是将这些组中的每一组变成类似于以下内容的东西:
id | x1 | x2 | y1' | y2' | y3'
1 a b c-2 d-3 e-4
2 ...
其中 y1 (y1-prime) 是 y1 和 y2 的相邻值的串联,其间有破折号。然而,y1 的数量因 id-group 和 id-group 的不同而不同,但我很高兴有一个非常宽的数据框,允许这些额外的内容作为解决方案。无论如何,我已经(相当徒劳,我必须承认)尝试用 reshape2 熔化和类型转换这些数据,但在这一点上,我不确定我是否没有正确处理这个问题,或者那个包不是一个适合我在这里想做的事情。任何建议将不胜感激 - 谢谢!
最佳答案
如果我正确理解了这个问题,这里有一种使用 plyr
来实现的方法:
foo <- read.table(textConnection("id x1 x2 y1 y2
1 a b c 2
1 a b d 3
1 a b e 4"),header=TRUE)
library("plyr")
ddply(foo,.(x1,x2),with,{
res <- data.frame(
id = id[1],
x1 = x1[1],
x2 = x2[1])
for (i in 1:length(y1))
{
res[[paste("y",i,sep="")]] <- paste(y1,y2,sep="-")[i]
}
return(res)
}
)
这将返回:
id x1 x2 y1 y2 y3
1 1 a b c-2 d-3 e-4
关于r - 如何在 R 中 reshape 这些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9592509/