我有一个包含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'


这将为您提供布尔向量,即TRUEFALSE的向量。您要计算的条件是TRUE的观察值。由于在R中TRUEFALSE都加倍为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/

10-10 09:21