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