用当月的平均值替换缺失值
Replace missing value with average of that month
我有每日入住率数据,入住率中有一些空值。
我想为相应 ID 替换相应月份的占用率。
我将用示例数据(模拟数据)进行解释:
Date ID Occupancy%
1/2/2018 1 95
2/2/2018 1 94
3/2/2018 1 94
4/2/2018 1 96
5/2/2018 1 94
6/2/2018 1 NA
7/2/2018 1 96
8/2/2018 1 94
1/2/2018 2 75
2/2/2018 2 NA
3/2/2018 2 79
4/2/2018 2 82
5/2/2018 2 NA
6/2/2018 2 76
7/2/2018 2 78
8/2/2018 2 80
我想用那个月的平均值和它的 ID 替换 NA。
我希望结果是
6/2/2018 1 NA
应该是 6/2/2018 1 94.7
1/2/2018 2 NA
应该是 1/2/2018 2 78.3
5/2/2018 2 NA
应该是 5/2/2018 2 78.3
关于如何在 r 中实现这一点有什么建议吗?
或者在SQL中是否容易执行,如果可以如何执行?
a=with(dat,ave(Occupancy.,sub(".*?\/","",Date),ID,FUN=function(x)mean(x,na.rm=T)))
> transform(dat,b=replace(x<-Occupancy.,y<-is.na(x),a[y]))
Date ID Occupancy. b
1 1/2/2018 1 95 95.00000
2 2/2/2018 1 94 94.00000
3 3/2/2018 1 94 94.00000
4 4/2/2018 1 96 96.00000
5 5/2/2018 1 94 94.00000
6 6/2/2018 1 NA 94.71429
7 7/2/2018 1 96 96.00000
8 8/2/2018 1 94 94.00000
9 1/2/2018 2 75 75.00000
10 2/2/2018 2 NA 78.33333
11 3/2/2018 2 79 79.00000
12 4/2/2018 2 82 82.00000
13 5/2/2018 2 NA 78.33333
14 6/2/2018 2 76 76.00000
15 7/2/2018 2 78 78.00000
16 8/2/2018 2 80 80.00000
我有每日入住率数据,入住率中有一些空值。
我想为相应 ID 替换相应月份的占用率。
我将用示例数据(模拟数据)进行解释:
Date ID Occupancy%
1/2/2018 1 95
2/2/2018 1 94
3/2/2018 1 94
4/2/2018 1 96
5/2/2018 1 94
6/2/2018 1 NA
7/2/2018 1 96
8/2/2018 1 94
1/2/2018 2 75
2/2/2018 2 NA
3/2/2018 2 79
4/2/2018 2 82
5/2/2018 2 NA
6/2/2018 2 76
7/2/2018 2 78
8/2/2018 2 80
我想用那个月的平均值和它的 ID 替换 NA。
我希望结果是
6/2/2018 1 NA
应该是6/2/2018 1 94.7
1/2/2018 2 NA
应该是1/2/2018 2 78.3
5/2/2018 2 NA
应该是5/2/2018 2 78.3
关于如何在 r 中实现这一点有什么建议吗?
或者在SQL中是否容易执行,如果可以如何执行?
a=with(dat,ave(Occupancy.,sub(".*?\/","",Date),ID,FUN=function(x)mean(x,na.rm=T)))
> transform(dat,b=replace(x<-Occupancy.,y<-is.na(x),a[y]))
Date ID Occupancy. b
1 1/2/2018 1 95 95.00000
2 2/2/2018 1 94 94.00000
3 3/2/2018 1 94 94.00000
4 4/2/2018 1 96 96.00000
5 5/2/2018 1 94 94.00000
6 6/2/2018 1 NA 94.71429
7 7/2/2018 1 96 96.00000
8 8/2/2018 1 94 94.00000
9 1/2/2018 2 75 75.00000
10 2/2/2018 2 NA 78.33333
11 3/2/2018 2 79 79.00000
12 4/2/2018 2 82 82.00000
13 5/2/2018 2 NA 78.33333
14 6/2/2018 2 76 76.00000
15 7/2/2018 2 78 78.00000
16 8/2/2018 2 80 80.00000