R 使用子组中填充的值填充NA值
我有以下data.frame:R 使用子组中填充的值填充NA值,r,na,missing-data,R,Na,Missing Data,我有以下data.frame: name nav_status destination A 5 MUMBAI A 0 NA A 1 NA B 5 NA B 0 NEW YORK B 1 NA 我打算用基于name列的值填充NA值。 我试过: 用上一次观察结转技术填充NA值,但随后数
name nav_status destination
A 5 MUMBAI
A 0 NA
A 1 NA
B 5 NA
B 0 NEW YORK
B 1 NA
我打算用基于name列的值填充NA值。
我试过:
NA
值,但随后数据会失真。我使用了zoo
包和na.locf
语法:
NEW使用data.table
,我们将'data.frame'转换为'data.table'(setDT(df1)
),按'name'分组,使用na.rm=FALSE
在目的地的前进方向上执行na.locf
,然后在反向模式下再次执行(fromLast=TRUE
)并分配(:=/code>)将输出返回到同一列
library(zoo)
library(data.table)
setDT(df1)[, destination := na.locf(na.locf(destination,
na.rm=FALSE), fromLast=TRUE), by = name]
df1
# name nav_status destination
#1: A 5 MUMBAI
#2: A 0 MUMBAI
#3: A 1 MUMBAI
#4: B 5 NEW YORK
#5: B 0 NEW YORK
#6: B 1 NEW YORK
您可以使用dplyr包执行此操作:
library(dplyr)
dat %>%
group_by(name) %>%
mutate(destination = destination[which(!is.na(destination))][1])
这将使用每个名称的destination的第一个非NA值填充destination列
name nav_status destination
(fctr) (dbl) (fctr)
1 A 5 MUMBAI
2 A 0 MUMBAI
3 A 1 MUMBAI
4 B 5 NEW YORK
5 B 0 NEW YORK
6 B 1 NEW YORK
name nav_status destination
(fctr) (dbl) (fctr)
1 A 5 MUMBAI
2 A 0 MUMBAI
3 A 1 MUMBAI
4 B 5 NEW YORK
5 B 0 NEW YORK
6 B 1 NEW YORK