gpt4 book ai didi

r - 计算 R 中因子的出现次数,报告的计数为零

转载 作者:行者123 更新时间:2023-12-04 01:33:49 24 4
gpt4 key购买 nike

我想计算数据框中某个因素的出现次数。例如,在下面的代码中计算给定类型的事件数:

library(plyr)
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
ddply(events, .(type), summarise, quantity = sum(quantity))

输出如下:
     type quantity
1 A 3
2 B 1

但是,如果我知道有三种类型的事件 A , BC ,我还想查看 C 的计数这是 0 ?换句话说,我希望输出为:
     type quantity
1 A 3
2 B 1
3 C 0

我该怎么做呢?感觉应该在某个地方定义一个函数来执行此操作。

以下是我关于如何解决这个问题的两个不太好的想法。

想法 #1:我知道我可以使用 for 来做到这一点循环,但我知道人们普遍认为,如果您使用的是 for循环进入 R ,那么你做错了什么,一定有更好的方法来做。

想法#2:向原始数据框添加虚拟条目。这个解决方案有效,但感觉应该有一个更优雅的解决方案。
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
events <- rbind(events, data.frame(type = 'C', quantity = 0))
ddply(events, .(type), summarise, quantity = sum(quantity))

最佳答案

如果您定义您的 events,您将免费获得此功能。变量正确地作为具有所需三个水平的因素:

R> events <- data.frame(type = factor(c('A', 'A', 'B'), c('A','B','C')), 
+ quantity = c(1, 2, 1))
R> events
type quantity
1 A 1
2 A 2
3 B 1
R> table(events$type)

A B C
2 1 0
R>

只需调用 table()在这个因素上已经做了正确的事情, ddply()也可以
如果你告诉它不要 drop :
R> ddply(events, .(type), summarise, quantity = sum(quantity), .drop=FALSE)
type quantity
1 A 3
2 B 1
3 C 0
R>

关于r - 计算 R 中因子的出现次数,报告的计数为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073918/

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