【发布时间】:2020-06-23 12:51:11
【问题描述】:
我有一个数据框,我想根据一列(“年龄”)创建几个数据框。现在我只知道如何手动进行,考虑年龄列进行过滤。但我不应该每次在列中出现新值时都这样做。
我的原始数据框在该列中有 20 个不同的值,我不想每次都重复代码。
减少数据框:
df <- data.frame(name = c("A", "B", "A", "C", "B", "B", "B", "C", "A"),
age = c(11, 11, 11, 12, 12, 11, 13, 12, 11))
我的代码:
df_11 <- df %>%
filter(age == 11)
df_12 <- df %>%
filter(age == 12)
df_13 <- df %>%
filter(age == 13)
我的结果应该是:
df_11 <- data.frame(name = c("A", "B", "A", "B", "A"),
age = c(11, 11, 11, 11, 11))
df_12 <- data.frame(name = c("C", "B", "C"),
age = c(12, 12, 12))
df_13 <- data.frame(name = c("B"),
age = c(13))
【问题讨论】:
-
您在寻找
split(df, df$age)吗?当然,这会将它们放在一个列表中,而不是放在你的全局环境中,这更好
标签: r dplyr tidyverse tidyr base