【问题标题】:How can I make a new data set from names of rows?如何根据行名创建新数据集?
【发布时间】:2019-07-25 22:03:12
【问题描述】:

我的数据集采用长格式,列中包含国家名称、年份和值。

我想要每个国家和每年的新数据集,我可以单独完成,但重复 195 并不好,所以我想使用“for”来完成

这适用于个别国家

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

但这似乎不起作用

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

我怎样才能让它工作?

【问题讨论】:

    标签: r for-loop filter


    【解决方案1】:

    如果打算创建多个数据集,请使用group_split 将数据拆分为listdata.frames

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

    并使用[[$list 中提取数据

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


    关于 OP 代码中的问题,它在每次迭代中分配给字母 i,因此它会得到更新。相反,一个选项是assign(虽然不推荐)

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

    【讨论】:

    • 不做进一步讨论:这个问题怎么不是How to split a data frame?的骗子
    • @markus 我认为 OP 更关心他的 for 循环失败,尽管 split 是一个选项。但是,如果 OP 的意图是了解他/她的代码失败背后的原因,那不是欺骗
    • 好吧,很公平。
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 2018-05-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2016-02-12
    相关资源
    最近更新 更多