如何根据特定列中的值创建多个数据框

How to create several dataframes considering their value in specific column

我有一个数据框,我想基于一个列 ('age') 创建多个数据框。现在我只知道如何手动进行,根据年龄列进行过滤。但我不应该每次在列中出现新值时都这样做。

我的原始数据框在该列中有 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))

一种方法是 splitlist2env:

dflist <- split(df,df$age)
names(dflist) <- paste0("df_",names(dflist))
list2env(dflist,envir = globalenv())
ls(pattern = "df")
[1] "df"    "df_11" "df_12" "df_13" 

虽然我同意@Sotos 的观点,但列表可能更好。