r - 如何在 R 中 reshape 这些数据?

标签 r reshape

所以——我正在使用一个 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/

相关文章:

r - 使用 R 中的 ggplot2 在多面、闪避条形图上的每个条形图上的文本居中对齐

r - 具有置信区间的交互图

在 R 中 reshape 数据

r - 在多个条件下合并 R 中的数据库,缺失值 (NA) 遍布各处

reshape - 在 Stata 中生成行中变量和列中给定变量的分位数的均值表

使用重复列 reshape 数据

r - R 中每个级别的信号/行之间的距离

r - 在ggplot2中创建箭头匹配大小(或lwd)

r - 如何将数据帧列表取消列出到 R 中的单个数据帧中

Python pandas dataframe 将长变为宽、多列和常量值