【问题标题】:dplyr: Divide all values by mean of first subgroupdplyr:将所有值除以第一个子组
【发布时间】:2019-08-03 04:39:41
【问题描述】:

编辑:用户 arg0naut 已回答该问题。谢谢!

我有许多按组(命名为 2-4)和子组(命名为 1-6)组织的观察。我想将组中的每个观察值除以其子组 1 的平均值(以便将组中的每个数据点标准化为其子组 1 的平均值)。此外,有些观察结果不适用。

这是我尝试调整的代码,到目前为止,它将每个观察值除以整体平均值:

data %>%
group_by(Group) %>%
mutate("New Variable" = Observation / mean(Observation, na.rm = TRUE))

我不知道如何表示我不想要整体平均值,而是每个组的子组 1 的平均值。我已经尝试了几个小时,但总是失败。

我附上了一张图片,可以帮助你理解我的意思。

感谢您的考虑!

Image

【问题讨论】:

  • mean(Observation[Subgroup == 1], na.rm = TRUE) 可以帮忙
  • 哇,是的,它做到了!非常感谢!
  • 为什么不group_by(Group, subgroup)

标签: r


【解决方案1】:

我认为您只需要按 subgroup 而不是 group 进行分组。 这是一个例子:

data <-
  data.frame(
    "Group" =  rep(2, 15),
    "Subgroup" = rep (1:2, c(10, 5)),
    "Observation" = c(rnorm(14), NA)
  )
data %>%
  group_by(Subgroup) %>%
  mutate("New variable" = Observation / mean(Observation, na.rm = TRUE))

【讨论】:

  • 这会将每个子组除以其自己的平均值(子组 1 / 平均值(子组 1),子组 2 / 平均值(子组 2),...)。 OP 想要将每个子组除以子组 1 的平均值:子组 1 / 平均值(子组 1),子组 2 / 平均值(子组 1),...(在同一组内)
  • 问题仍然需要答案...如果您按Group 分组并使用 arg0naut 对问题的评论作为提示,您可能可以到达那里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 2022-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
相关资源
最近更新 更多