我有一个数据集(主数据集),如下所示:
id cleaning_fee boro zipcode price
1 NA Manhattan 10014 100
2 70 Manhattan 10013 125
3 NA Brooklyn 11201 97
4 25 Manhattan 10012 110
5 30 Staten Island 10305 60
通过Borough和Zipcode分组,我知道了(使用na.rm = True):
borough zipcode avgCleaningFee
Brooklyn 11217 88.32000
Brooklyn 11231 89.05085
Brooklyn 11234 42.50000
Manhattan 10003 97.03738
Manhattan 10011 109.97647
我要执行的操作是通过以下任一方式将NA插入到主数据集中的“ cleaning_fee”变量中:
(a)估算分组平均值(如上表2所示,其中我在2个条件下分组)
或
(b)对变量(例如邮政编码,boro和价格)使用KNN回归来估算清洁费变量。 (附言:我了解KNN回归的工作原理,但我没有使用过,如果您能在1行左右的时间里解释代码,那将是很棒的)
如果有人可以帮我解决这个问题,那就太好了。谢谢!
答案 0 :(得分:1)
我们可以使用第一种方法
library(dplyr)
df1 %>%
group_by(Borough, Zipcode) %>%
mutate(cleaning_fee = replace(Cleaning_fee,
is.na(Cleaning_fee), mean(Cleaning_fee, na.rm = TRUE))
或者使用na.aggregate
中的zoo
library(zoo)
df1 %>%
group_by(Borough, Zipcode) %>%
mutate(cleaning_fee = na.aggregate(cleaning_fee))