Один из способов использования data.table заключается в следующем. В ваших данных, talk_time
символ. Поэтому я преобразовал столбец в цифру c. Затем для каждого queue_name
я использовал replace()
, чтобы заменить NA средним значением каждой группы.
library(data.table)
setDT(call_center_tbl)[, talk_time := as.numeric(talk_time)][,
talk_time := replace(talk_time,
list = which(is.na(talk_time)),
values = mean(talk_time, na.rm = TRUE)),
by = queue_name][]
queue_name talk_time
1: A 230
2: B 150
3: C 150
4: A 200
5: B 100
6: B 200
7: C 150
Вы можете использовать nafill()
вместо replace()
, если хотите .
setDT(call_center_tbl)[, talk_time := as.numeric(talk_time)][,
talk_time := nafill(x = talk_time, fill = mean(talk_time, na.rm = TRUE)),
by = queue_name][]