【问题标题】:Dynamically create new DataFrames from unique row names从唯一的行名动态创建新的 DataFrame
【发布时间】:2018-09-20 10:34:54
【问题描述】:

我正在尝试使用现有数据框中的唯一行名创建新数据框。

我想使用“Unicos”中的名称并使用它们来创建新的数据帧,然后在每个单独的数据帧中添加我想要的所有信息。

但显然我不知道如何做到这一点.. 有人知道吗?

Unicos <- unique(df$INTERFASE)
x = 0
for (i in Unicos){
  x = x + 1
  Unicos[x] <- subset(TraficoPorInterfaz, INTERFASE == toString(Unicos[x]))
}

【问题讨论】:

  • 考虑by:Unicos_df_list &lt;- by(df, df$INTERFASE, identity)

标签: r loops for-loop dataframe subset


【解决方案1】:

问题在于,在您的 for 循环中,您正在用数据子集覆盖 Unicos,但循环本身正在遍历 Unicos 中的值。

您可以创建新的数据框并将它们存储在与Unicos 一样长的列表中,如下所示:

Unicos <- unique(df$INTERFASE)
new_dfs <- lapply(Unicos, function(x) subset(TraficoPorInterfaz, INTERFASE == toString(x)))

【讨论】:

    【解决方案2】:

    Base R 具有split 函数,它将根据列中的值拆分您的数据框。拆分数据框会为您提供一个命名的数据框列表,我认为这是您想要的输出。

    如果没有您的数据样本,则不是肯定的,但split(df, df$INTERFASE) 应该可以工作。列表中的每个项目都是一个数据框,它是df 的子集,给定值为df$INTERFASE。

    【讨论】:

      【解决方案3】:

      创建一个data.frames列表,列表中的每个元素都是INTERFASE的一个值

      L = split(TraficoPorInterfaz, TraficoPorInterfaz$INTERFASE)
      

      如果您希望它们出现在您的全局环境中

      list2env(L, envir = .GlobalEnv)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多