2014-05-18 366 views
7
aaa<- data.frame(sex=c(1,1,2,2,1,1), group1=c(1,2,1,2,2,2),group2=c("A","B","A","B","A","B")) 

STATA指令R观测值的数目:如何计算在像Stata的命令计数

count if sex==1 & group1==2 
count if sex==1 & group2=="A" 

计数计数满足指定条件的观测数。如果没有指定条件,count会显示数据中观察值的数量。

如何计算R?谢谢。

+3

这里是一个合理的字典映射['STATA命令r'(https://github.com/EconometricsBySimulation/RStata/blob/master/dictionary.md) – mnel

回答

9

with函数将让您使用速记列参考和sum将计数TRUE结果从表达式(s)。

sum(with(aaa, sex==1 & group1==2)) 
## [1] 3 

sum(with(aaa, sex==1 & group2=="A")) 
## [1] 2 

正如@mnel指出的那样,你也可以这样做:

nrow(aaa[aaa$sex==1 & aaa$group1==2,]) 
## [1] 3 

nrow(aaa[aaa$sex==1 & aaa$group2=="A",]) 
## [1] 2 

那的好处是,你可以这样做:

nrow(aaa) 
## [1] 6 

而且,行为相匹配的Stata的count几乎确切地说(尽管如此)。

0

您也可以使用dplyr包中的过滤器函数,该函数返回具有匹配条件的行。

> library(dplyr) 

> nrow(filter(aaa, sex == 1 & group1 == 2)) 
[1] 3 
> nrow(filter(aaa, sex == 1 & group2 == "A")) 
[1] 2