按多个因素对数据帧进行分组,然后使用 Tidyverse 风格进行数值计算

问题描述 投票:0回答:1

我正在尝试更好地使用 Tidyverse 方法来处理数据。因此,我制作了一个包含 4 列的数据框,其中包含三个分类变量和一个连续变量。如何对三个分类变量进行分组,然后计算包含连续变量的第四中的值的平均值、范围、IQR 等(无特定函数)? 这是我的尝试:

col1 <- c(rep("A", 3), rep("B", 3))
col2 <- c(rep("x", 3), rep("y", 3))
col3 <- c("1", "1", "2", "2", "3", "3")
col4 <- as.numeric(runif(6, min = 0, max = 5))
df <- cbind(col1, col2, col3, col4)
df <- as.data.frame(df)
df$col4 <- as.numeric(df$col4)


df %>%
  filter(col1 == "A") %>%
  filter(col2 == "x") %>%
  filter(col3 == "1") %>%
  summarise(
    maximum = max(col4),
    minimum = min(col4),
    print(maximum - minimum)
  ) 

但我相当确定,能够胜任 Tidyverse 的人会认为我的尝试非常丑陋,因此我将不胜感激任何意见。

r dataframe dplyr tidyverse
1个回答
0
投票

您可以使用

group_by
dplyr 函数按您想要的行数进行分组。然后您可以使用
summarise
函数创建任意数量的摘要。您还可以使用
.groups
参数来控制是否要对输出的小标题进行分组。

df |>
  dplyr::group_by(col1, col2, col3) |>
  dplyr::summarise(
    maximum = max(col4),
    minimum = min(col4),
    range = maximum - minimum
  )
© www.soinside.com 2019 - 2024. All rights reserved.