首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将新的计算结果添加到R中的组

将新的计算结果添加到R中的组
EN

Stack Overflow用户
提问于 2019-07-17 03:20:29
回答 2查看 79关注 0票数 0

我想在分组输出中添加一个新的计算列。新列的名称是WHIP。它的计算方法是将H和BB相加,然后将结果除以IP。

以下是输入的示例:

我用我的代码就能做到这一点:

代码语言:javascript
复制
wheeler %>% 
filter(DR<99) %>%    
group_by(DR) %>%
summarise(n = n(), avg_ER = mean(ER, na.rm=T)) %>%
mutate_if(is.numeric, round, digits = 2)

我尝试添加以下内容:

代码语言:javascript
复制
summarise(n = n(), avg_ER = mean(ER, na.rm=T), WHIP =((H + BB) / IP)

但它并没有起作用。我希望输出如下所示:

代码语言:javascript
复制
     DR     n avg_ER  WHIP
1     4    11   2.91  1.00
2     5     6   3.17  0.45
3     6     1   7.00  1.33
EN

回答 2

Stack Overflow用户

发布于 2019-07-17 03:44:34

首先尝试在sum中包装WHIP变量。如果不这样做,您就是在尝试计算每个观察值的鞭子,而不是整个组的鞭子,因此summarise将无法工作。

代码语言:javascript
复制
df <- data.frame(ip=1:8, dp = sample(1:4, 8, T), er = sample(1:4, 8, T), 
                 h=sample(1:5,8,T),bb=sample(2:6,8,T)) %>%
  group_by(dp) %>%
  summarise(n = n(), avg_ER = mean(er), 
            WHIP = (sum(h)+ sum(bb)) / sum(ip))
票数 0
EN

Stack Overflow用户

发布于 2019-07-17 03:56:31

我仍然对期望的输出到底是什么感到困惑。听起来您需要两件事: 1)计算逐行鞭子,2)计算按do分组的汇总统计数据。这就是我要做的。

代码语言:javascript
复制
df <- data.frame(ip=1:8, 
                 dr = sample(1:4, 8, T), 
                 er = sample(1:4, 8, T), 
                 h=sample(1:5,8,T),
                 bb=sample(2:6,8,T))

df$whip <- (df$bb+df$h)/df$ip

df %>% group_by(dr) %>% 
  summarise(mean.er=mean(er),n=n()) %>% left_join(df,.)

  ip dr er h bb      whip mean.er n
1  1  3  3 4  2 6.0000000    2.00 2
2  2  1  2 1  3 2.0000000    2.75 4
3  3  2  4 3  5 2.6666667    2.50 2
4  4  1  3 5  3 2.0000000    2.75 4
5  5  3  1 5  6 2.2000000    2.00 2
6  6  1  4 5  3 1.3333333    2.75 4
7  7  2  1 3  2 0.7142857    2.50 2
8  8  1  2 2  2 0.5000000    2.75 4

因此,您可以获得原始行数、每个行的鞭状值,以及基于DR组的汇总统计信息。

而@bjorn2beWild的解决方案给出了不同的输出。

代码语言:javascript
复制
df %>% group_by(dr) %>%
  summarise(n = n(), avg_ER = mean(er), 
            WHIP = (sum(h)+ sum(bb)) / sum(ip))

# A tibble: 3 x 4
     dr     n avg_ER  WHIP
  <int> <int>  <dbl> <dbl>
1     1     4   2.75  1.2 
2     2     2   2.5   1.3 
3     3     2   2     2.83
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57064111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档