如何根据特定列中的值创建多个数据框
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))
一种方法是 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"
虽然我同意@Sotos 的观点,但列表可能更好。
我有一个数据框,我想基于一个列 ('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))
一种方法是 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"
虽然我同意@Sotos 的观点,但列表可能更好。