我的数据框d
是这样的:
Round NHA
1 1
1 0
2 1
2 1
2 0
我想创建一个变量,计算每轮回合NHA = 1的概率。我试过了:
library(dplyr);
d %>% group_by(Round) %>% summarise(prob = sum(d$NHA)/length(d$NHA))
但是这个函数没有矢量化,并且对于所有Round都显示prob
的相同结果。非常感谢任何帮助。
答案 0 :(得分:1)
通过使用d$NHA
,它将获取“NHA”列中的所有值,而只需要属于“Round”每组的元素。语法只是sum(NHA)
。此外,length(d$NHA)
将是相同的,即'd'数据的nrow。基本上,我们将获得相同的价值观。如果我们需要除以每个组的长度,请使用n()
,否则使用length(d$NHA)
或nrow(d))
d %>%
group_by(Round) %>%
summarise(prob = sum(NHA)/n())
#or
#summarise(prob = sum(NHA)/nrow(d))