我有一个包含100000行数据的数据集。我试图在Excel中执行一些countif
操作,但是速度太慢了。所以我想知道是否可以在R中完成这种操作?基本上,我想基于多个条件进行计数。例如,我可以指望职业和性别
row sex occupation
1 M Student
2 F Analyst
2 M Analyst
最佳答案
十分简单。您的数据框将如下所示:
df <- data.frame(sex=c('M','F','M'),
occupation=c('Student','Analyst','Analyst'))
然后,您可以通过首先指定
COUNTIF
部分来实现IF
的等效功能,如下所示:df$sex == 'M'
这将为您提供布尔向量,即
TRUE
和FALSE
的向量。您要计算的条件是TRUE
的观察值。由于在R中TRUE
和FALSE
都加倍为1和0,因此您可以简单地在布尔向量上sum()
。因此,COUNTIF(sex='M')
的等效项为sum(df$sex == 'M')
如果存在未指定
sex
的行,则上面将返回NA
。在这种情况下,如果您只想忽略缺失的观测值,请使用sum(df$sex == 'M', na.rm=TRUE)
关于r - 如何在R中实现countifs函数(excel),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23000661/