首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对列中的特定值应用weighted.mean

对列中的特定值应用weighted.mean
EN

Stack Overflow用户
提问于 2021-12-10 15:10:48
回答 2查看 34关注 0票数 1

我有一个名为df的数据框架,有五列:

代码语言:javascript
复制
age <- c(10,11,12,12,10,11,11,12,10,11,12)
time <- c(20,26,41,60,29,28,54,24,59,70,25)
weight <- c(123,330,445,145,67,167,190,104,209,146,201)
gender <- c(1,1,2,2,2,2,1,2,2,2,1)
Q2 <- c(112,119,114,120,121,117,116,114,121,122,124)
df <- data_frame(age, w, time, gender, Q2)

我想要的是使用两个条件将基于每个年龄的weighted.mean应用于我的数据帧:1)gender = 2 and 2) Q2 >=114 & Q2 <= 121

通过下面的代码,我可以简单地应用weighted.mean,但我不知道如何使用我的两个条件。

代码语言:javascript
复制
df1<-
  df %>% 
  group_by(age) %>% 
  summarise(weighted_time = weighted.mean(time, weight))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-10 15:18:23

下面是你要找的东西吗?

代码语言:javascript
复制
library(tidyverse)

age <- c(10,11,12,12,10,11,11,12,10,11,12)
time <- c(20,26,41,60,29,28,54,24,59,70,25)
weight <- c(123,330,445,145,67,167,190,104,209,146,201)
gender <- c(1,1,2,2,2,2,1,2,2,2,1)
Q2 <- c(112,119,114,120,121,117,116,114,121,122,124)
df <- data.frame(age, weight, time, gender, Q2)

df %>% 
  group_by(age) %>% 
  filter(gender == 2 & Q2 >=114 &  Q2 <= 121) %>% 
  summarise(weighted_time = weighted.mean(time, weight), .groups = "drop")

#> # A tibble: 3 × 2
#>     age weighted_time
#>   <dbl>         <dbl>
#> 1    10          51.7
#> 2    11          28  
#> 3    12          42.4
票数 1
EN

Stack Overflow用户

发布于 2021-12-10 15:18:32

您可以为这2 (3)条件添加一个过滤器:

df %>% filter(gender == 2 & Q2 >= 114 & Q2 <= 121) %>% group_by(age) %>% summarise(weighted_time = weighted.mean(time, weight))

这给了我们

代码语言:javascript
复制
# A tibble: 3 x 2
    age weighted_time
  <dbl>         <dbl>
1    10          51.7
2    11          28  
3    12          42.4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70306567

复制
相关文章

相似问题

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