我正在尝试对数据框中的所有行进行插值。我正在使用str(c(df1, df2))
#List of 6
# $ year1 : Factor w/ 3 levels "2001","2002",..: 1 2 3
# $ countries1: Factor w/ 3 levels "Canada","Mexico",..: 1 3 2
# $ color1 : Factor w/ 3 levels "black","blue",..: 1 3 2
# $ year2 : Factor w/ 3 levels "2010","2011",..: 1 2 3
# $ countries2: Factor w/ 3 levels "France","Germany",..: 1 2 3
# $ color2 : Factor w/ 3 levels "green","white",..: 2 3 1
。这样可以对值进行插值,但是其中一些超出范围。
如果我改用apply(data_final,2,na.approx)
,则与使用na.approx(data_final[8,])
的行相比,该行的值将有所不同。
此外,如果我执行apply
,我将得到与na.approx(data_final)
相同的结果。这没有任何意义,因为假定应该将apply(data_final,2,na.approx)
函数应用于数据帧中的每一行。
应用(data_final,2,na.approx) [8,] 0.63 0.49 2.40 2.65 3.65 5.80 0.96 1.85 1.43 1.25 1.21 1.20 0.91 1.00 0.96 0.80 1.42 1.82 1.910
na.approx(data_final [8,]) [1] 0.630 0.490 0.584 0.678 0.772 0.866 0.960 1.850 1.430 1.250 1.210 1.200 0.910 1.000 0.960 0.800 1.420 1.820 1.910 1.780 1.620 [22] 1.650 1.380 1.370
答案 0 :(得分:0)
因为na.approx
进行列计算,而不是行计算。根据{{1}}(来自?na.approx
),用法是
na.approx(object,...)
,参数说明为
如果obj具有多个列,则将上述策略应用于每一列。
使用可复制的示例
zoo
逐行应用library(zoo)
df1 <- data.frame(col1 = c(2, NA, 3, 4), col2 = c(1, 3, NA, 2))
na.approx(df1)
# col1 col2
#[1,] 2.0 1.0
#[2,] 2.5 3.0
#[3,] 3.0 2.5
#[4,] 4.0 2.0
na.approx