【问题标题】:How to create several dataframes considering their value in specific column [duplicate]考虑到它们在特定列中的值如何创建多个数据框[重复]
【发布时间】: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


【解决方案1】:

一种方法是使用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 的观点,列表可能更好。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多