我刚刚开始使用R,并且我试图用正向和反向值的平均值替换每列中的NULl值。以下是具有几个空值的示例数据框
A B C
1 1 2000
2 NA NA
3 4 5000
4 NA NA
5 7 8000
我正在尝试做这样的事情。
A B C
1 1 2000
2 2.5 3500
3 4 5000
4 5.5 6500
5 7 8000
tidyr似乎完成了一半的工作,df %>% fill("A",.direction = c("down"))
但是我该如何替换正向和反向值的平均值?
我们可以用 na.approx
library(zoo)
df1[-1] <- na.approx(df1[-1])
df1
# A B C
#1 1 1.0 2000
#2 2 2.5 3500
#3 3 4.0 5000
#4 4 5.5 6500
#5 5 7.0 8000
或搭配 lapply
df1[-1] <- lapply(df1[-1], na.approx)
或与 dplyr
library(dplyr)
df1 %>%
mutate_if(is.numeric, na.approx)
或搭配 data.table
library(data.table)
setDT(df1)[, (2:3) := lapply(.SD, na.approx), .SDcols = 2:3]
df1 <- structure(list(A = 1:5, B = c(1L, NA, 4L, NA, 7L), C = c(2000L,
NA, 5000L, NA, 8000L)), class = "data.frame", row.names = c(NA,
-5L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句