以下是我的样本数据集 –
我需要根据其他行中相同item_id和Item_type的重量来填充item weight。例如,第三个观测的Item_wt必须是“5.6”。您能建议一种在R中填补缺失值的方法吗?我尝试了许多技术,但没有得到我想要的结果。谢谢。
回答:
假设NULL
是NA
,在按’item_ID’和’item_Type’分组后,获取第一个非NA的’item_wt’
library(dplyr)df1 %>% group_by(item_ID, item_Type) %>% mutate(item_wt = item_wt[!is.na(item_wt)][1])# A tibble: 5 x 3# Groups: item_ID, item_Type [3]# item_ID item_wt item_Type# <chr> <dbl> <chr>#1 T001 5.6 Dairy#2 T002 9.2 Snacks#3 T001 5.6 Dairy#4 T004 3.9 Drinks#5 T002 9.2 Snacks
或者使用data.table
library(data.table)setDT(df1)[, item_wt := item_wt[!is.na(item_wt)][1], .(item_ID, item_Type)]
数据
df1 <- data.frame(item_ID = c('T001', 'T002', 'T001', 'T004', 'T002'), item_wt = c(5.6, 9.2, NA, 3.9, NA), item_Type = c("Dairy", "Snacks", "Dairy", "Drinks", "Snacks"), stringsAsFactors=FALSE)