Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中NA值的线性插值_R_Dplyr_Data.table_Interpolation - Fatal编程技术网

R中NA值的线性插值

R中NA值的线性插值,r,dplyr,data.table,interpolation,R,Dplyr,Data.table,Interpolation,我有一个表test,我想根据确实存在的值之间的线性插值来近似其NA值 例如,绘制的第二行如下所示: v1 <- unlist(test[2,]) plot(v1[!is.na(v1)], names(v1)[!is.na(v1)], type="l", add = TRUE) 以下是示例数据: dput(test) structure(list(variable = c(-20, -10, 0, 24, 40, 55), `26500` = c(NA, NA, 0L, NA, NA,

我有一个表
test
,我想根据确实存在的值之间的线性插值来近似其NA值

例如,绘制的第二行如下所示:

v1 <- unlist(test[2,])
plot(v1[!is.na(v1)], names(v1)[!is.na(v1)], type="l", add = TRUE)
以下是示例数据:

dput(test)
structure(list(variable = c(-20, -10, 0, 24, 40, 55), `26500` = c(NA, 
NA, 0L, NA, NA, NA), `30000` = c(0L, 0L, NA, NA, NA, NA), `30100` = c(NA, 
NA, NA, NA, 0L, 0L), `30700` = c(NA, NA, NA, 0L, NA, NA), `31600` = c(10L, 
NA, NA, NA, NA, NA), `33700` = c(20L, 10L, NA, NA, NA, NA), `33800` = c(NA, 
NA, 10L, NA, NA, NA), `33900` = c(NA, NA, NA, NA, 10L, 10L), 
    `34000` = c(NA, NA, NA, 10L, NA, NA), `34600` = c(30L, 20L, 
    NA, NA, NA, NA), `34800` = c(NA, NA, 20L, NA, NA, NA), `35100` = c(NA, 
    NA, NA, NA, 20L, 20L), `35200` = c(NA, NA, NA, 20L, NA, NA
    ), `35300` = c(NA, 30L, NA, NA, NA, NA), `35400` = c(40L, 
    NA, NA, NA, NA, NA), `35600` = c(NA, NA, 30L, NA, NA, NA), 
    `35800` = c(NA, NA, NA, 30L, 30L, NA), `35900` = c(NA, 40L, 
    NA, NA, NA, 30L), `36200` = c(50L, NA, 40L, NA, NA, NA), 
    `36300` = c(NA, NA, NA, 40L, 40L, NA), `36400` = c(NA, NA, 
    NA, NA, NA, 40L), `36700` = c(NA, 50L, NA, NA, NA, NA), `36900` = c(NA, 
    NA, 50L, NA, NA, NA), `37000` = c(NA, NA, NA, 50L, 50L, 50L
    ), `37200` = c(60L, NA, NA, NA, NA, NA), `37800` = c(NA, 
    60L, NA, NA, NA, NA), `37900` = c(NA, NA, 60L, NA, NA, NA
    ), `38000` = c(NA, NA, NA, 60L, NA, NA), `38200` = c(70L, 
    NA, NA, NA, 60L, 60L), `38800` = c(NA, 70L, 70L, NA, NA, 
    NA), `39000` = c(NA, NA, NA, 70L, NA, 70L), `39100` = c(NA, 
    NA, NA, NA, 70L, NA), `39200` = c(80L, NA, NA, NA, NA, NA
    ), `39700` = c(NA, 80L, NA, NA, NA, NA), `39800` = c(NA, 
    NA, 80L, NA, NA, NA), `39900` = c(NA, NA, NA, NA, NA, 80L
    ), `40000` = c(NA, NA, NA, 80L, 80L, NA), `40200` = c(90L, 
    NA, NA, NA, NA, NA), `40600` = c(NA, 90L, NA, NA, NA, NA), 
    `40700` = c(NA, NA, 90L, NA, NA, NA), `40800` = c(NA, NA, 
    NA, 90L, 90L, 90L), `41700` = c(100L, 100L, 100L, 100L, NA, 
    100L), `41800` = c(NA, NA, NA, NA, 100L, NA)), row.names = c(NA, 
-6L), class = "data.frame")

我们可以使用
na.interp
from
forecast

library(forecast)
test[-1] <- t(apply(test[-1], 1, na.interp))

然后进行绘图

v1 <- unlist(test[2, -1])
plot(v1, names(v1), type = 'l')

v1我编辑了这个问题,谢谢你也许
na.approw
lapply(test[-1],na.approx,na.rm=FALSE)
如果是按行
库(zoo);t(应用(测试[-1],1,na.approx,na.rm=FALSE))
请检查预期输出是否如下
test[-1] <- t(apply(test[-1], 1, na.approx, na.rm = FALSE))
v1 <- unlist(test[2, -1])
plot(v1, names(v1), type = 'l')