【问题标题】:R summarize qualitative data based on quantitative subsets (dplyr?)R根据定量子集总结定性数据(dplyr?)
【发布时间】:2015-06-27 16:52:00
【问题描述】:

我真的很难弄清楚如何对我按定量值划分数据并基于这些组总结描述性统计数据的排序进行反向分析。

为了帮助解释,请查看下面的玩具数据框,该数据框捕获了我的问题。

structure(list(ID = 1:10, Color = structure(c(3L, 3L, 1L, 2L, 
1L, 1L, 3L, 3L, 4L, 2L), .Label = c("blue", "green", "red", "yellow"
), class = "factor"), Type = structure(c(3L, 2L, 1L, 2L, 2L, 
1L, 2L, 3L, 3L, 2L), .Label = c("Both", "Indoor", "Outdoor"), class = "factor"), 
    W1 = c(74.22, 78.59, 45.82, 41.9, 83.44, 97.76, 38.41, 140.68, 
    65.95, 64.46), W2 = c(26.86, 138.8, 41.75, 95.32, 17.57, 
    23.13, 84.81, 93.33, 104.31, 67.66), W3 = c(42.25, 56.37, 
    105.95, 72.64, 82.6, 90.55, 54.55, 122.41, 29.03, 44.09), 
    W4 = c(68.77, 12.67, 58.69, 125.95, 24.33, 34.84, 113.12, 
    10.02, 127.05, 60.3), W5 = c(28.93, 99.35, 126.18, 84.31, 
    138.55, 6.18, 144.63, 99.31, 40.76, 9.42), W6 = c(130.24, 
    149.72, 124.67, 118.97, 102.55, 96.96, 135.88, 38.08, 69.69, 
    120), W7 = c(1.94, 94.22, 12.66, 29.71, 137.53, 116.29, 145.58, 
    40.32, 44.51, 99.16), W8 = c(41.61, 147.42, 40.82, 143.51, 
    114.19, 83.16, 108.72, 86.37, 16.6, 91.13)), .Names = c("ID", 
"Color", "Type", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8"
), class = "data.frame", row.names = c(NA, -10L))

我想要对这些数据执行的操作是循环以 W 开头的列,这些列显示不同时间点的值。具体来说,我想说:对于每一列,基于“大于 100”之类的值条件的子集,然后根据该子集总结定性列(颜色和类型),并使用统计信息(例如每个分组的计数)星期。

因此,它涉及对每一列应用一个函数,然后使用每一列中的特定子集来返回基于两列的汇总统计信息。从广义上讲,我过去曾使用 plyr 和 dplyr 包对不同组的数字进行分组和汇总。所以在这种情况下,我可以弄清楚如何在这个 df 上使用 numcolwise(mean) 来查看每种颜色的平均值。但我想不出如何进行这种变化。

非常感谢您的帮助。

【问题讨论】:

    标签: r subset plyr dplyr


    【解决方案1】:

    我不确定我是否 100% 了解您想要什么。这是你想要的吗? 在这里,我过滤所有周的大于 100 的值,然后获取颜色和类型组合的计数

    library(dplyr)
    library(magrittr)
    library(tidyr)
    gather(df, Week, Value, 4:11) %>%
            filter(Value > 100) %>%
            group_by(Color,Week) %>%
            summarise(Count = n()) %>%
            spread(Week, Count)
    

    将有一些宽格式的 NA 值表示在给定的一周内没有值

    【讨论】:

    • 您好,感谢您的回复。不熟悉第二个包,所以我会看看。我的最终目标是做你在第 8 周所做的事情,但要在 df 的所有周内做。我不想按多个星期进行过滤,我想为每个单独可用的星期运行相同的分析(颜色和类型的分组)。
    • 请给我想要的输出,这应该是什么样子?
    • 每个定性列的类似 df 布局。所以对于颜色(不是两者,只是按颜色分组)将在第 1 列的行中包含所有可能的颜色。然后每周的汇总计数将在其余列中。所以在上面的例子中,第 8 周的结果将在 df 的最后一列中。
    • 我编辑了我的答案,如果这不是您想要的,请在您的原始帖子中提供示例布局
    • 谢谢!我正在寻找的是这个 df 的宽版本。如果在您使用的过滤器/收集序列中有任何简单的方法可以做到这一点,请分享。如果没有,我可以使用 dcast。
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 2019-12-30
    • 2020-11-14
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多