Условное вменение одной переменной с использованием Dplyr - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть набор данных (основной набор данных), который выглядит следующим образом:

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

Группировка по городам и почтовым индексам Я получаю это (используя 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) использовать регрессию KNN для таких переменных, как почтовый индекс, боро и цена, чтобы рассчитать переменную платы за уборку.(PS Я понимаю, как работает регрессия KNN, но я не использовал ее, было бы здорово, если бы вы могли объяснить код в 1 строку или около того)

Было бы здорово, если кто-нибудь может помочь мне с этим.Спасибо !!

1 Ответ

0 голосов
/ 26 ноября 2018

Мы можем использовать первый метод

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...