web-dev-qa-db-ja.com

Rの観測数をStataコマンドカウントのようにカウントする方法

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でカウントする方法は?ありがとうございました。

8
stata

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とほぼ正確に一致します(構文にかかわらず)。

11
hrbrmstr

また、一致する条件を持つ行を返すdplyrパッケージのフィルター関数を使用することもできます。

> library(dplyr)

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