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行的数据帧,每个状态一个.但是我需要回到原始数据框并将状态的平均值放在属于该状态的行中.
我该怎么做呢?
一个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)