说我有以下数据集(该数据集包含2000多个观察值)。我想获得左撇子,脉搏大于或等于80并用右手拍手的男性比例(数量)。
如何在R中做到这一点?
X Sex WrHnd NWHnd WHnd Fold Pulse Clap Exer
1 1 Female 18.5 18.0 Right R on L 92 Left Some
2 2 Male 19.5 20.5 Left R on L 104 Left None
3 3 Male 18.0 13.3 Right L on R 87 Neither None
4 4 Male 18.8 18.9 Right R on L NA Neither None
5 5 Male 20.0 20.0 Right Neither 35 Right Some
6 6 Female 18.0 17.7 Right L on R 64 Right Some
答案 0 :(得分:1)
这是在末尾给您号码的一种方式。我故意为Left
拍手计算得出此小样本的输出,但是您可以在大数据中将其更改为Right
。
library(dplyr)
df2 <- df %>%
filter(Sex == "Male" & WHnd == "Left" & Pulse >= 80 & Clap == "Left") %>%
count(.)
> df2
# A tibble: 1 x 1
n
<int>
1 1
答案 1 :(得分:0)
您可以使用dplyr
首先创建一个满足所有条件的所有行的数据框
library(dplyr)
select_Df <- df %>% filter(Sex == "Male" & WHnd == "Left" & Pulse >= 80 & Clap == "Right")
然后,通过将新数据框中包含的个体数量除以原始数据框中的个体总数,可以得出该群体在整个人口中所占的比例:
nrow(select_Df) / nrow(df)
答案 2 :(得分:0)
您不需要dplyr
使用data.frame为df
,您可以按以下方式计算此比例:
sum(df$Sex=='Male' & df$Whnd=='Left' & df$Pulse >= 80 & df$Clap=='Right') / nrow(df)
因为在R中,sum(TRUE)
是1
,sum(c(TRUE, TRUE))
是2
,等等。