从唯一的行名称动态创建新的DataFrame

时间:2018-04-10 17:37:54

标签: r loops for-loop dataframe subset

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

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

但显然我不知道如何做到这一点.. 有没有人有任何想法?

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

3 个答案:

答案 0 :(得分:0)

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

您可以创建新的数据框并将其存储在与Unicos一样长的列表中:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

L = split(TraficoPorInterfaz, TraficoPorInterfaz$INTERFASE)

如果您想在全球环境中使用它们

list2env(L, envir = .GlobalEnv)