【问题标题】:Average within R data frame [duplicate]R数据帧内的平均值[重复]
【发布时间】:2013-10-09 17:27:04
【问题描述】:

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

  name  val type group
1 A3330 184 ave IX13
2 A3330 42  min IX13
3 A1473 195 ave IX01
4 A1473 93  min IX01
5 A3330 80  ave BG12
6 A3330 44  min BG12
7 A1473 15  ave IX3
8 A1473 91  min IX3

如果类型相同,我想跨组平均 val 中的每个值。所以 1 和 5 是平均的,尽管它们是不同的组。 2 和 6、3 和 7、4 和 8 也是如此。最后,我希望有一个看起来像这样的新数据框:

name   val type
A3330  132 ave
A333   43  min
A1473  105 ave
A1473  92  min

我在想我应该这样做:

for (metric in type)
 for(names in name)
  mean(df[df$name==names && type==metric, df$type])
 }
}

但在我有限的 R 经验中,总有比循环更好的方法。 有什么建议吗?

【问题讨论】:

    标签: r dataframe average


    【解决方案1】:

    我自己没有测试过,但是使用 data.table 包,这样的东西应该适合你 -

    library(data.table)
    df <- data.table(df)
    df2 <- df[,
       list(
          meanval = mean(val)
       ),
       by = c('name','type')
    ]
    

    【讨论】:

    • 我收到此错误:[.data.frame(df, , list(meanval = mean("val")), by = c("name", : 未使用的参数 (by = c ("name", "type")) 这个错误对你来说意味着什么吗?
    • 你可能错过了df &lt;- data.table(df)
    • 该死。我做到了,但后来忘记使用新的 df。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多