2014-05-18 363 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