【问题标题】:reshape repeated measurements long to wide in R [duplicate]在R中重塑从长到宽的重复测量[重复]
【发布时间】:2015-05-28 12:29:35
【问题描述】:

这是一些示例数据

>mydat <- data.frame(id=c(rep(1,6),rep(2,4)),treat=c("a","a","a","b","b","c","a","b","d","f"))
>mydat
id treat
1   1     a
2   1     a
3   1     a
4   1     b
5   1     b
6   1     c
7   2     a
8   2     b
9   2     d
10  2     f

如何计算每个 id 的处理次数并将它们放在单独的列中?

应该是这样的:

>result <- data.frame(id=c(1,2),a=c(3,1),b=c(2,1),c=c(1,0),d=c(0,1),f=c(0,1))
>result
    id a b c d f
  1  1 3 2 1 0 0
  2  2 1 1 0 1 1

谢谢

【问题讨论】:

  • 一个简单的table(mydat) ?

标签: r dataframe dplyr reshape


【解决方案1】:

试试dcast

library(reshape2)
dcast(mydat, id~treat, value.var='treat', length)

或者

 table(mydat)

或者

 xtabs(rep(1, nrow(mydat))~id+treat, mydat)

【讨论】:

  • 哇,太快了,太完美了,谢谢!
  • 我认为重塑常见问题是正确的。
【解决方案2】:

这是dplyrtidyr 的解决方案

library(dplyr)
library(tidyr)
mydat %>% count(id, treat) %>% spread(treat, n, fill = 0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2012-12-19
    • 2016-08-26
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多