【问题标题】:How to split a data frame by factor then merge by an ID variable如何按因子拆分数据帧,然后按 ID 变量合并
【发布时间】:2014-03-03 20:38:36
【问题描述】:

所以我有一个包含两个向量的数据框。时间和团队。

df <- data.frame(time=rep(seq(1:3),3), team=LETTERS[rep(1:3,each=3)])

>  time team
>1    1    A
>2    2    A
>3    3    A
>4    1    B
>5    2    B
>6    3    B
>7    1    C
>8    2    C
>9    3    C

如何按时间拆分 data.frame,然后按时间将其重新合并在一起?像这样。

>  time df.A df.B df.C
>1    1    A    B    C
>2    2    A    B    C
>3    3    A    B    C

我想出了如何使用 split 或 dlply 拆分 data.frame,但我没有成功使用 cbind 或 merge 将数据框重新组合在一起。

此外,每个(拆分)列表的长度都不同,因此任何将 NA 添加到组合中的帮助也将不胜感激。谢谢。

【问题讨论】:

  • 由于timeteam 是完全共线的,因此您的预期输出是不可能的。
  • 糟糕,很抱歉。刚刚更新了输入 df 以反映更改。
  • 您也需要更新代码。
  • @Richard 来自library(reshape2)dcast(df, time ~ team)。没用吗?
  • 刚刚做了。 @Paulo,我会试试看....

标签: r merge split do.call


【解决方案1】:

您可以为此使用reshape

> df$tmp <- df$team
> reshape(df, idvar='time', timevar='team', direction='wide')
  time tmp.A tmp.B tmp.C
1    1     A     B     C
2    2     A     B     C
3    3     A     B     C

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多