根据另一列中的变量组创建行平均

时间:2018-11-16 17:20:07

标签: r grouping mean

我正在尝试创建一个新的数据框或具有基于另一列中分组平均值的列...这将通过一些示例得到最好的解释:

Data Example

因此在数据示例中,我具有端口1-5和三个变量(V2_IV,V3_IV,R2) 我希望每个小时都有一个基于端口分组的这些变量的平均值。端口1和2为一个平均值= a。端口3、4和5为另一个平均值= b。

所以要得到这样的东西: Results

*请注意,结果中给出的变量数仅是示例,并非累计平均值。

1 个答案:

答案 0 :(得分:1)

首先,我们在R中重新创建您的数据,以便我们可以使用它:

var update interface{}
errUpdate := bson.UnmarshalJSON(body, &update)
if errUpdate != nil {
    fmt.Println(errUpdate)
}
dbErr = collection.Update(query, update)

下面的代码现在将端口分配给您提到的组。如果您希望扩展此代码以合并更多的组,则可以分配更多的组。这里的想法是您需要一个列来告诉您每个观察值分配给哪个组。您提供了两组,所以我只使用了ifelse语句的二进制分配:

data <- data.frame(Year = 2014, Month = 8, Day = 26,
               Hour = c(9,9,9,9,9,10,10,10,10,10,11,11,11,11,11),
               Port = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5),
               DoY = 238,
               Date = "8/26/2014",
               Season = "Summer",
               V2_IV = c(19.361, 19.676, 21.831, 20.692, 19.405, 19.597, 19.8935, 22.5585, 21.321, 20.8605, 19.919, 20.4825, 23.401, 22.093, 21.7965),
               V3_IV = c(.872, NA, .826, NA, .868, .872, NA, .829, NA, .8665, .8715, NA, .8285, NA, .867),
               R2 = c(.998676, .998901, .9923, .994796, .992848, .997106, .996422, .972802, .995367, .996529, .995808, .998653, .988912, .996155, .987083))

现在,我们只需要计算这三个变量的平均值即可。我选择在V3_IV列中输入一些缺失项作为NA,以便处理summarise_at函数中的那些缺失值,您必须指定a <- c(1,2) b <- c(3,4,5) data$Group <- ifelse(data$Port %in% a, "a", "b") 。如果您填写这些值,则该部分是不必要的。

na.rm = TRUE