【问题标题】:How to calculate conditional average in data frame in R?如何计算R中数据框中的条件平均值?
【发布时间】:2020-11-26 12:36:38
【问题描述】:
假设我们有一个数据集,一个 sn-p 看起来像:
count party gender
0 Rep F
2 Rep M
3 Rep F
如果party = Rep 和gender = F,我正在尝试计算count 列的平均值。 IE。这里应该是 1.5。这怎么能用 R 代码写呢?
【问题讨论】:
标签:
r
conditional-statements
average
【解决方案1】:
这行得通吗:
library(dplyr)
dat %>% filter(party == 'Rep' & gender == 'F') %>% summarise(avg = mean(count))
# A tibble: 1 x 1
avg
<dbl>
1 1.5
【解决方案2】:
如果你想使用基础 R:
mean(df[(df$party == 'Rep' & df$gender == 'F'),]$count)
【解决方案3】:
使用data.table:
setDT(dt)
dt[, mean(count), .(party, gender)]
输出:
party gender V1
1: Rep F 1.5
2: Rep M 2.0
这将计算所有 party-gender 对的 mean 和 count,如果您想包含所有组合(不仅仅是 Rep/F)。
数据:
dt = read.table(text = 'count party gender
0 Rep F
2 Rep M
3 Rep F
', header = T)