我有一个如下所示的数据框:
set.seed(300)
df <- data.frame(site = sort(rep(paste0("site", 1:5), 5)),
value = sample(c(1:5, NA), replace = T, 25))
df
site value
1 site1 NA
2 site1 5
3 site1 5
4 site1 5
5 site1 5
6 site2 1
7 site2 5
8 site2 3
9 site2 3
10 site2 NA
11 site3 NA
12 site3 2
13 site3 5
14 site3 4
15 site3 4
16 site4 NA
17 site4 NA
18 site4 4
19 site4 4
20 site4 4
21 site5 NA
22 site5 3
23 site5 3
24 site5 1
25 site5 1
Run Code Online (Sandbox Code Playgroud)
如您所见,列中有几个缺失值value.我需要value用列表的平均值替换列中的缺失值.因此,如果value测量值存在缺失值site1,我需要将均值归结value为site1.但是,数据帧不断被添加到R并导入到R中,下次导入数据帧时,它可能会增加到50行的长度,并且可能会有更多的缺失值value.我需要创建一个函数,它将自动检测哪个站点的缺失值value被测量,并为该特定站点计算缺失值.有人可以帮帮我吗?
nac*_*dus 10
利用impute()从包Hmisc和ddply从包plyr:
require(plyr)
require(Hmisc)
df2 <- ddply(df, "site", mutate, imputed.value = impute(value, mean))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6353 次 |
| 最近记录: |