【问题标题】:Extract and/or group list elements into data frames based on an aspect of their names根据名称的一个方面将列表元素提取和/或分组到数据框中
【发布时间】:2018-04-05 12:16:50
【问题描述】:

a question I asked previously 开始,我想知道是否可以根据元素名称提取和/或分组列表元素。

所有列表元素都包含数天(跨越数月)的每小时数据,并遵循以下相同的命名结构:

YYYY-MM-DD HH

这是我的列表的样子(请注意,其他月份也有数据,因此我要专门针对个别月份):

我要做的是提取具有相同MM 值的每个列表元素,然后将组合列表保存为数据框。

在此示例中,我希望将一月份的所有内容组合在一个数据框中,并在一年中的其他月份重复此操作。

我的想法是最终得到 12 个数据帧,每个数据帧代表一年中的一个月。

如何做到这一点?

【问题讨论】:

    标签: r list


    【解决方案1】:

    您可以尝试以下方法:

    my_list = list('YYYY-01-DD HH-MM-SS' = data.frame(id=1),
                           'YYYY-01-DD HH-MM-SS' = data.frame(id=2),
                           'YYYY-02-DD HH-MM-SS' = data.frame(id=3),
                           'YYYY-01-DD HH-MM-SS' = data.frame(id=4))
    
    library(data.table)
    lapply(split(my_list,substr(names(my_list),6,7)),rbindlist)
    

    哪个输出:

    $`01`
       id
    1:  1
    2:  2
    3:  4
    
    $`02`
       id
    1:  3
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢,这很好,但它不是我想要的,因为我的输入是列表对象而不是数据框对象。最终,我希望输出是通过列表创建的数据框对象。我将更新问题并提供更多细节以使事情更清楚。
    • 我修改了我的答案,我希望这更符合你的期望:)
    • 感谢@Florian,但是当我将输出保存到january 时,我似乎得到了不同的结果。结果是一个列表对象,每个月的数据都被压缩到其中。我做错了什么?
    • 好吧,我想我现在明白了;)如果这对你有用,请告诉我!如果没有,请考虑添加reproducible example,这会很有帮助。
    • 完美!感谢您与我一起解决这个问题,@Florian!对于那些跟随的人,我创建了一个months 对象,将输出保存到该对象,然后我创建了january/february 对象并将相应的列表元素保存到它们(所以january <- months$'01'february <- months$'02' 等等上)。
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2018-02-03
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多