我如何通过dplyr取几行平均pf

时间:2018-02-15 22:07:21

标签: r dplyr

我想获得以下

的平均值
df<- structure(list(data1 = c(207.404, 212.581, 880.965, 1033.05, 
296.026, 2198.92, 2422.49, 1796.63, 2272.94, 2256.56, 3359.57, 
3674.91, 3133.45, 3510.23, 3651.04, 2816.53, 2681.64, 2894.54, 
2689.13, 2828.89), data2 = c(0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), data3 = structure(c(1L, 
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 
3L, 4L, 5L), .Label = c("HH1", "HH2", "HH3", "HH4", "HH5"), class = "factor")), .Names = c("data1", 
"data2", "data3"), class = "data.frame", row.names = c(NA, -20L
))

我做以下

df %>% 
group_by(data2) %>%
summarise_at(vars(-data3), funs(mean(.))) 

但如果我做得对不对,我就无法理解

让我们手动执行此操作,看看它是否给出相同的答案

例如第一个

mean(207.404,212.581, 880.965, 1033.050 ,296.026)

答案是207.404,而在上面的脚本中它计算526

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这与dplyr无关。基本R mean函数将其第一个参数作为向量。当您提供多个向量时,只会评估第一个向量。请参阅以下示例。

mean(c(207.404,212.581, 880.965, 1033.050 ,296.026))
# [1] 526.0052