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命令:
count if sex==1 & group1==2
count if sex==1 & group2=="A"
count计算满足指定条件的观察数。如果未指定条件,则count将显示数据中的观察数。
如何计算R?谢谢。
答案 0 :(得分:11)
with
函数将允许您使用速记列引用,sum
将计算表达式的TRUE
结果。
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
(尽管语法不同)。
答案 1 :(得分:3)
您还可以使用dplyr包中的过滤器函数,该函数返回具有匹配条件的行。
> library(dplyr)
> nrow(filter(aaa, sex == 1 & group1 == 2))
[1] 3
> nrow(filter(aaa, sex == 1 & group2 == "A"))
[1] 2