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

R 如何根据特定列中的值创建多个数据帧,r,dplyr,tidyverse,tidyr,base,R,Dplyr,Tidyverse,Tidyr,Base,我有一个数据帧,我想基于一列(“年龄”)创建几个数据帧。现在我只知道如何手动操作,考虑到年龄列进行过滤。但我不应该每次在列中出现新值时都这样做 我的原始数据帧在该列中有20个不同的值,我不想每次都重复代码 简化数据帧: df <- data.frame(name = c("A", "B", "A", "C", "B", "B", "B", "

我有一个数据帧,我想基于一列(“年龄”)创建几个数据帧。现在我只知道如何手动操作,考虑到年龄列进行过滤。但我不应该每次在列中出现新值时都这样做

我的原始数据帧在该列中有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一种方法是使用
split
list2env

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" 

dflist您正在寻找
split(df,df$age)
?当然,这将把它们放在一个列表中,而不是放在您的全球环境中,这无论如何都是更好的
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))
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"