gpt4 book ai didi

R 编程 : plyr how to count values from a column with ddply

转载 作者:行者123 更新时间:2023-12-04 10:07:39 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Faster ways to calculate frequencies and cast from long to wide

(4 个回答)


2年前关闭。




我想总结一下我的数据的通过/失败状态如下。换句话说,我想告诉每个产品/类型的通过和失败案例的数量。

library(ggplot2)
library(plyr)
product=c("p1","p1","p1","p1","p1","p1","p1","p1","p1","p1","p1","p1","p2","p2","p2","p2","p2","p2","p2","p2","p2","p2","p2","p2")
type=c("t1","t1","t1","t1","t1","t1","t2","t2","t2","t2","t2","t2","t1","t1","t1","t1","t1","t1","t2","t2","t2","t2","t2","t2")
skew=c("s1","s1","s1","s2","s2","s2","s1","s1","s1","s2","s2","s2","s1","s1","s1","s2","s2","s2","s1","s1","s1","s2","s2","s2")
color=c("c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3","c1","c2","c3")
result=c("pass","pass","fail","pass","pass","pass","fail","pass","fail","pass","fail","pass","fail","pass","fail","pass","pass","pass","pass","fail","fail","pass","pass","fail")
df = data.frame(product, type, skew, color, result)

以下 cmd 返回通过 + 失败案例的总数,但我想要通过和失败的单独列
dfSummary <- ddply(df, c("product", "type"), summarise, N=length(result))

结果是:
        product type N
1 p1 t1 6
2 p1 t2 6
3 p2 t1 6
4 p2 t2 6

想要的结果是
         product type Pass Fail
1 p1 t1 5 1
2 p1 t2 3 3
3 p2 t1 4 2
4 p2 t2 3 3

我尝试过类似的事情:
 dfSummary <- ddply(df, c("product", "type"), summarise, Pass=length(df$product[df$result=="pass"]), Fail=length(df$product[df$result=="fail"]) )

但显然这是错误的,因为结果是失败和通过的总和。

预先感谢您的建议!
问候,
里亚德。

最佳答案

尝试:

dfSummary <- ddply(df, c("product", "type"), summarise, 
Pass=sum(result=="pass"), Fail=sum(result=="fail") )

这给了我结果:
  product type Pass Fail
1 p1 t1 5 1
2 p1 t2 3 3
3 p2 t1 4 2
4 p2 t2 3 3

解释:
  • 您正在提供数据集,dfddply功能。
  • ddply正在拆分变量,“产品”和“类型”
  • 这导致 length(unique(product)) * length(unique(type))片段(即数据的子集 df )在两个变量的每个组合上进行拆分。
  • 每件作品,ddply应用您提供的某些功能。在这种情况下,您计算 result=="pass" 的数量和 result=="fail"有。
  • 现在 ddply每个部分都留下了一些结果,即您拆分的变量(产品和类型)和您请求的结果(通过和失败)。
  • 它将所有部分组合在一起并返回它
  • 关于R 编程 : plyr how to count values from a column with ddply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103320/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com