R基于定量子集(dplyr?)总结定性数据
R summarize qualitative data based on quantitative subsets (dplyr?)
我真的很难弄清楚如何进行排序的逆向分析,我根据定量值对数据进行分区并根据这些组总结描述性统计数据。
为了帮助解释,请查看下面捕获我的问题的玩具数据框。
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 开头的列上循环,这些列显示不同时间点的值。具体来说,我想说的是:对于每一列,基于 "greater than 100" 等值条件的子集,然后根据该子集总结定性列(颜色和类型)以及统计信息,例如每个分组中的每个分组的计数星期。
因此它涉及对每一列应用一个函数,然后将每一列中的特定子集用于基于两列的 return 摘要统计信息。从广义上讲,我过去使用过 plyr 和 dplyr 包来按不同的组对数字进行分组和汇总。所以在这种情况下,我可以弄清楚如何在此 df 上使用 numcolwise(mean) 来查看每种颜色的平均值。但是我想不出如何做这种变化。
非常感谢您的帮助。
我不确定我是否 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 值,表示给定的一周没有值
我真的很难弄清楚如何进行排序的逆向分析,我根据定量值对数据进行分区并根据这些组总结描述性统计数据。
为了帮助解释,请查看下面捕获我的问题的玩具数据框。
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 开头的列上循环,这些列显示不同时间点的值。具体来说,我想说的是:对于每一列,基于 "greater than 100" 等值条件的子集,然后根据该子集总结定性列(颜色和类型)以及统计信息,例如每个分组中的每个分组的计数星期。
因此它涉及对每一列应用一个函数,然后将每一列中的特定子集用于基于两列的 return 摘要统计信息。从广义上讲,我过去使用过 plyr 和 dplyr 包来按不同的组对数字进行分组和汇总。所以在这种情况下,我可以弄清楚如何在此 df 上使用 numcolwise(mean) 来查看每种颜色的平均值。但是我想不出如何做这种变化。
非常感谢您的帮助。
我不确定我是否 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 值,表示给定的一周没有值