Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
使用矩阵数据的na.approx或na.spline替换NAs_R_Data Processing - Fatal编程技术网

使用矩阵数据的na.approx或na.spline替换NAs

使用矩阵数据的na.approx或na.spline替换NAs,r,data-processing,R,Data Processing,我是R的新手,目前遇到了一个问题,数据如下所示: ID h1 h2 h3 h4 h5 h6 h7 h8 IP6_1 0.1800 NA -0.8600 NA 0.0400 -0.1400 1.4400 1.4900 IP6_2 -0.0250 -0.3050 -1.1050 -1.2150 0.0250 1.2750 1.7950 1.3850 IP6

我是R的新手,目前遇到了一个问题,数据如下所示:

    ID      h1      h2     h3      h4      h5      h6     h7     h8  
    IP6_1  0.1800   NA    -0.8600  NA      0.0400 -0.1400 1.4400 1.4900  
    IP6_2 -0.0250 -0.3050 -1.1050 -1.2150  0.0250  1.2750 1.7950 1.3850  
    IP6_3  0.2125 -0.1875   NA    -1.2225 -0.1425  0.7325 1.6275 1.3975  
    IP6_4  0.0150   NA    -1.0450 -0.3550  0.2950 -0.0150 0.3850 0.3050  
    IP6_5  0.1200 -0.0900 -0.9100 -0.6500  0.0900 -0.2700 0.9100 1.1200  
    IP6_6  0.0200 -0.0200 -0.8400 -0.6600   NA    -0.0900 0.6200 0.0800 
数据具有随机NAs,我想使用每行替换这些NAs。 我试着用它:

z_data <- zoo(cluster_data_wf[,-1])        
na.approx(z_data)
z_数据像这样

require(zoo)
cols = colnames(x[, -1])
x = data.frame(ID=x[, 1], t(apply(x[, -1], 1, na.approx)))
colnames(x)[-1] = cols
print(x)

         ID      h1      h2     h3      h4      h5      h6     h7     h8
1 IP6_1  0.1800 -0.3400 -0.860 -0.4100  0.0400 -0.1400 1.4400 1.4900
2 IP6_2 -0.0250 -0.3050 -1.105 -1.2150  0.0250  1.2750 1.7950 1.3850
3 IP6_3  0.2125 -0.1875 -0.705 -1.2225 -0.1425  0.7325 1.6275 1.3975
4 IP6_4  0.0150 -0.5150 -1.045 -0.3550  0.2950 -0.0150 0.3850 0.3050
5 IP6_5  0.1200 -0.0900 -0.910 -0.6500  0.0900 -0.2700 0.9100 1.1200
6 IP6_6  0.0200 -0.0200 -0.840 -0.6600 -0.3750 -0.0900 0.6200 0.0800

这个问题没有以可复制的方式提供输入,因此我们不知道您是从什么开始的;但是,如果我们所拥有的内容重复出现在下面的注释中,那么由于
na.approx
按列操作,我们将其转置,除第1列外,使用
na.approx
,将其转置并填充除第1列以外的所有内容:

replace(DF, -1, t(na.approx(t(DF[, -1]))))
给予:

     ID      h1      h2     h3      h4      h5      h6     h7     h8
1 IP6_1  0.1800 -0.3400 -0.860 -0.4100  0.0400 -0.1400 1.4400 1.4900
2 IP6_2 -0.0250 -0.3050 -1.105 -1.2150  0.0250  1.2750 1.7950 1.3850
3 IP6_3  0.2125 -0.1875 -0.705 -1.2225 -0.1425  0.7325 1.6275 1.3975
4 IP6_4  0.0150 -0.5150 -1.045 -0.3550  0.2950 -0.0150 0.3850 0.3050
5 IP6_5  0.1200 -0.0900 -0.910 -0.6500  0.0900 -0.2700 0.9100 1.1200
6 IP6_6  0.0200 -0.0200 -0.840 -0.6600 -0.3750 -0.0900 0.6200 0.0800
注意:

Lines <- " ID      h1      h2     h3      h4      h5      h6     h7     h8  
    IP6_1  0.1800   NA    -0.8600  NA      0.0400 -0.1400 1.4400 1.4900  
    IP6_2 -0.0250 -0.3050 -1.1050 -1.2150  0.0250  1.2750 1.7950 1.3850  
    IP6_3  0.2125 -0.1875   NA    -1.2225 -0.1425  0.7325 1.6275 1.3975  
    IP6_4  0.0150   NA    -1.0450 -0.3550  0.2950 -0.0150 0.3850 0.3050  
    IP6_5  0.1200 -0.0900 -0.9100 -0.6500  0.0900 -0.2700 0.9100 1.1200  
    IP6_6  0.0200 -0.0200 -0.8400 -0.6600   NA    -0.0900 0.6200 0.0800 "

DF <- read.table(text = Lines, header = TRUE, as.is = TRUE)

台词太棒了!你能解释一下为什么第一行需要删除并重新添加吗?我删除了第一列,因为它是一个字符串/因子,然后对每行应用
na.approx
。您需要转置最终结果。输入数据如注释所示。但问题表明
na.approx(zoo(DF[,-1]))
忽略了NAs,而事实并非如此。事实上,它将所有NAs替换为线性插值,除了开始或结束处的NAs,因为您需要在每一侧插入一个值。事实上,您是对的,数据与我的数据不完全相同。NAs在开始或结束时都不会被替换。当na位于开头或结尾时,如何将na.approx用于这种情况?
na.approx
在内部使用
approx
,并向其传递参数,以便您可以使用参数
rule=2
将最外层的值扩展到末端的NAs。有关详细信息,请参见
近似值中的
规则
参数。