Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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_R - Fatal编程技术网

计算缺失数据表示的范围-R

计算缺失数据表示的范围-R,r,R,我有一个数据集,其中的值表示列中的位置(这是SNPs/基因组学工作) 我试图找出一种方法来计算每段缺失数据的距离(“间隙”-如下所示为NA)。例如,1466-1650=184 我也想计算连续观测的延伸,但我猜,一旦我解决了第一个问题,这将相对容易。例如,1450-1466=16 以下是一个关于数据组织方式的示例: 1450 1466 NA NA 1650 1654 1943 NA 2568 这个问题与我的下一期尝试分析数据集中的所有样本相关-循环分析每个样本-请希望类似的内容能有所帮助: 选择

我有一个数据集,其中的值表示列中的位置(这是SNPs/基因组学工作)

我试图找出一种方法来计算每段缺失数据的距离(“间隙”-如下所示为NA)。例如,1466-1650=184

我也想计算连续观测的延伸,但我猜,一旦我解决了第一个问题,这将相对容易。例如,1450-1466=16

以下是一个关于数据组织方式的示例:

1450
1466
NA
NA
1650
1654
1943
NA
2568

这个问题与我的下一期尝试分析数据集中的所有样本相关-循环分析每个样本-请

希望类似的内容能有所帮助:

选择非空行,然后查找它们之间的差异,然后将它们附加到不包括第一个索引的数据

nonEmptyRows<-which(!is.na(df$data))
df[nonEmptyRows[-1], "gaps"]<-diff(df$data[nonEmptyRows])

 data gaps
 1450   NA
 1466   16
   NA   NA
   NA   NA
 1650  184
 1654    4
 1943  289
   NA   NA
 2568  625

nonEmptyRows您可以使用
rle
功能(运行长度编码)执行此操作。像这样的

vec <- c(1450,1466,NA,NA,1650,1654,1943,NA,2568) #your data

rl <- rle(is.na(vec)) #rle on whether values are NA
然后你可以像这样算出间隙长度

gaps <- vec[cumsum(rl$lengths)[rl$values]+1] - #upper bound of each NA group
        vec[c(1,cumsum(rl$lengths))[rl$values]] #lower bound

gaps
[1] 184 625

谢谢!是否有办法将间隙长度(即NAs之后的第一个值-例如184)和连续长度(4+289)提取到单独的列中?谢谢!我正试图用continuous制作另一个专栏,使用:rl2计算出来,以防有人需要(PS单次观察报告为NA):cont
gaps <- vec[cumsum(rl$lengths)[rl$values]+1] - #upper bound of each NA group
        vec[c(1,cumsum(rl$lengths))[rl$values]] #lower bound

gaps
[1] 184 625