如何从行名创建新的数据集?

时间:2019-07-25 22:03:12

标签: r for-loop filter

我的数据集的格式很长,列中包含国家/地区名称,年份和值。

我想要每个国家/地区和每年的新数据集,我可以分别进行,但是重复195并不好,所以我想使用“ for”

这适用于特定国家/地区

Mali = filter(datosUnicef , CountryName == "Mali")

但这似乎不起作用

for (i in datosUnicef$CountryName) {
   i = filter(datosUnicef , CountryName == i)
}

我如何使它工作?

1 个答案:

答案 0 :(得分:0)

如果打算创建多个数据集,请使用group_split将数据拆分为list s的data.frame

library(dplyr)
lst1 <- datosUnicef %>%
            group_split(CountryName)

并使用list[[$提取数据

注意:最好不要在全局环境中创建多个对象。而是创建一个list


关于OP代码中的问题,它在每次迭代中都分配给字母i,因此会对其进行更新。相反,选项为assign(虽然不建议)

for(i in unique(datosUnicef$CountryName)) {
      assign(i, filter(datosUnicef, CountryName == i))
   }