如何使用R创建包含聚合方式的列?

int*_*t3h 2 aggregate r dataframe

在R中,我在数据帧中有一堆数据,如:

state | zip   | value
______|_______|______
CA    | 94555 | 18
CA    | 94556 | 5
OH    | 12345 | 22
OH    | 12346 | 10
Run Code Online (Sandbox Code Playgroud)

等等.

我希望在每一行中添加一列,列出该状态的平均"值".

我可以通过" (aggregate(data$value, list(State = data$state), mean))" 获得手段的数据框.这给了我一个50行的数据帧,每个状态一个.但是我需要回到原始数据框并将状态的平均值放在属于该状态的行中.

我该怎么做呢?

mne*_*nel 6

一个data.table解决方案

library(data.table)
DT <-  data.table(state = c("CA","CA","OH","OH"), 
                   zip = c(94555,94556,12345,12346), 
                   value = c(18, 5, 22, 10))

DT[, mean := mean(value), by = state]

##    state   zip value mean
## 1:    CA 94555    18 11.5
## 2:    CA 94556     5 11.5
## 3:    OH 12345    22 16.0
## 4:    OH 12346    10 16.0
Run Code Online (Sandbox Code Playgroud)