【发布时间】:2017-02-24 21:42:59
【问题描述】:
我想创建一个汇总数据框,它根据文本前缀收集所有行,每个变量都有平均值、最大值和最小值。因此,在下面的示例中,我想总结“Jim”商店、“Jen、商店等”的平均值、最小值和最大值,以及每组商店中所有家具的相同值。
shop tables chairs beds
jim-1 2 63 31
jim-2a 10 4 16
jim-2b 32 34 43
jen-1 32 90 32
jen-2 73 91 6
jen-3 35 85 65
sam-a 72 57 72
sam-b 18 48 11
sam-c 34 49 79
paul-1 43 49 23
paul-2 76 20 23
paul-2a 34 20 8
请注意,有些商店是 1、2、3 或 a、b、c 等,并且名称中的字母数量可能不定(jim vs paul)。我希望我的输出类似于:
shop_group tables_av tables_min tables_max chairs_av chairs_min chairs_max beds_av beds_min beds_max furniture_av furniture_min furniture_max
jim 14.67 2.00 32.00 33.67 4.00 63.00 30.00 16.00 43.00 78.33 30.00 109.00
jen 46.67 32.00 73.00 88.67 85.00 91.00 34.33 6.00 65.00 169.67 154.00 185.00
sam 41.33 18.00 72.00 51.33 48.00 57.00 54.00 11.00 79.00 146.67 77.00 201.00
paul 51.00 34.00 76.00 29.67 20.00 49.00 18.00 8.00 23.00 98.67 62.00 119.00
提前谢谢...
【问题讨论】:
-
使用
dplyr包,它会是这样的(假设您的数据框称为df):library(dplyr); df %>% group_by(shop) %>% summarise_all(funs(max, mean, min))。为此,您需要删除附加在每个名称上的多余连字符和数字,例如,每个jim行都被标记为jim。你可以使用gsub。