【问题标题】:Multiple plyr functions and operations in one statement?一个语句中有多个 plyr 函数和操作?
【发布时间】:2013-03-21 17:54:24
【问题描述】:

我有一个数据集如下:

i,o,c
A,4,USA
B,3,CAN
A,5,USA
C,4,MEX
C,1,USA
A,3,CAN

我想把这个数据集改成如下形式:

i,u,o,c
A,3,4,2
B,1,3,1
C,2,2.5,1

这里,u 表示数据集中变量 i 的唯一实例,o = (o / u 的总和),c = 唯一国家/地区。

我可以通过以下语句和使用 plyr 得到你:

count(df1,vars="i")

我还可以使用从我的previous 问题中学到的见解来获取其他一些变量。我可以通过保存到多个数据帧然后最终将它们连接在一起来实现我的预期结果,我想知道是否存在单行优化或者只是比我目前冗长的方法更好的方法。

谢谢!

【问题讨论】:

    标签: r dataframe plyr


    【解决方案1】:

    我不明白这与您之前的问题有何不同。方法是一样的:

    library(plyr)
    ddply(mydf, .(i), summarise, 
          u = length(i), 
          o = mean(o),
          c = length(unique(c)))
    #   i u   o c
    # 1 A 3 4.0 2
    # 2 B 1 3.0 1
    # 3 C 2 2.5 2
    

    如果您更喜欢data.table 解决方案:

    > library(data.table)
    > DT <- data.table(mydf)
    > DT[, list(u = .N, o = mean(o), c = length(unique(c))), by = "i"]
       i u   o c
    1: A 3 4.0 2
    2: B 1 3.0 1
    3: C 2 2.5 2
    

    【讨论】:

    • 谢谢!使用 data.table 的优秀替代解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多