r - 如何按组变异?

标签 r dataframe group-by dplyr mutate

我试图根据每个组的平均函数来改变一个新变量。我尝试使用 R 中可用的预加载数据框“ToothGrowth”运行此代码。

输出结果不正确,似乎是将每个组的平均值作为列表循环,而不是分配给每个组。

显示我想要实现的目标的图表:

data("ToothGrowth")
head(ToothGrowth)

tg.tb01<-ToothGrowth %>% 
group_by(supp, dose) %>% # mydata has 3 more variables. 
  summarise(mean = mean(len)) %>% 
  print()
ToothGrowth %>% 
  group_by(supp) %>%
  mutate(submean2 = len - tg.tb01$mean/tg.tb01$dose)

最佳答案

您不需要另一个数据集来存储平均值。往下看:

library(dplyr)
library(datasets)

ToothGrowth %>% 
  group_by(supp, dose) %>%
  mutate(lenmean = mean(len),
         submean2 = len - lenmean/dose)

#> # A tibble: 60 x 5
#> # Groups:   supp, dose [6]
#>      len supp   dose lenmean submean2
#>    <dbl> <fct> <dbl>   <dbl>    <dbl>
#>  1   4.2 VC      0.5    7.98   -11.8 
#>  2  11.5 VC      0.5    7.98    -4.46
#>  3   7.3 VC      0.5    7.98    -8.66
#>  4   5.8 VC      0.5    7.98   -10.2 
#>  5   6.4 VC      0.5    7.98    -9.56
#>  6  10   VC      0.5    7.98    -5.96
#>  7  11.2 VC      0.5    7.98    -4.76
#>  8  11.2 VC      0.5    7.98    -4.76
#>  9   5.2 VC      0.5    7.98   -10.8 
#> 10   7   VC      0.5    7.98    -8.96
#> # ... with 50 more rows

关于r - 如何按组变异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60740567/

相关文章:

r - 如何在R中堆叠数据?

sql - 通过根据两个(起始和终止)值计算非中断时间段进行分组

python - 在 Pandas Dataframe 中生成另一列的某些子集的最小值的新列的有效方法

pandas - 考虑最后一组与 groupby

r - 按特定顺序将 R 中的向量转换为下/上三角矩阵

r - R:在矩阵上应用函数并保持矩阵尺寸

r - 有没有办法使用字符串变量向 dplyr 函数提供参数?这个叫什么?

r - 如何将一串连续的国际象棋移动转换为垂直数据框?

python - 我需要更改pandas数据框中的几列类型。无法使用iloc这样做

javascript - Shiny 的 ui.R 是否支持在每个带有 tabsetPanel 的 tabPanel 上包含 html 页面?