R-由%>%创建的矢量表

时间:2016-06-10 06:16:25

标签: r

我的数据框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的相同结果。非常感谢任何帮助。

1 个答案:

答案 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))