R中缺失数据的百分比给出错误

Posted

技术标签:

【中文标题】R中缺失数据的百分比给出错误【英文标题】:percentage of missing data in R gives error 【发布时间】:2018-09-28 19:52:51 【问题描述】:

我的数据在 R 控制台中如下所示:

暗淡(df1)

[1] 54003   994

df1[1:10, 1:10]

                        marker X1 X73 X88 X9 X17 X25 X33 X41 X49
1      1228104|F|0-8:C>T-8:C>T  0   0   0  0   0  NA   0   0   0
2    2277607|F|0-10:A>T-10:A>T NA   0   0 NA  NA  NA  NA   0   0
3  100023173|F|0-47:G>A-47:G>A  0   0   0 NA  NA  NA   0   0   0
4      1043336|F|0-7:A>G-7:A>G  1   1   1  0  NA   0   1   1   1
5    1212218|F|0-49:A>G-49:A>G  0   0   0  0   0   0   0   0   0
6    1019554|F|0-14:T>C-14:T>C  0   0   0  0  NA   0   0   0   0
7    1114675|F|0-18:T>C-18:T>C  0   0   0  0   0   0   0   0   0
8  100024550|F|0-16:G>A-16:G>A NA  NA  NA NA  NA  NA   0   0   0
9    1271969|F|0-22:T>A-22:T>A  0   0  NA  0  NA  NA   0   0   0
10     1106702|F|0-8:C>A-8:C>A  0  NA   0  0   0   0   0   0  NA

我根据这个过滤我的数据 (FILTER1)

## % of missing per genotypes/samples
pmg <- apply(df1, 2, function(gid) sum(is.na(gid)) / length(gid))
length(pmg)

## dropping bad genotypes/ samples
df2 <-  data.frame(marker=df1[,1], df1[,pmg <= .2][,-1])
dim(df2)
#[1] 54003   909

## % of missing per snp
pms <- apply(df1[pmg <= .2, ], 1,
             function(snp) sum(is.na(snp)) / length(snp))
hist(pms)
length(pms)

# removing bad snps with high missing values 
df3 <- df2[pms <=0.2,]
dim(df3)
# [1] 37982   909

我尝试运行相同的过滤器,但这次我将两个步骤的顺序切换如下(FILTER 2):

## % of missing per snp
pms <- apply(df1[pmg <= .2, ], 1,
             function(snp) sum(is.na(snp)) / length(snp))
hist(pms)
length(pms)

# removing bad snps with high missing values 
df2 <- df1[pms <=0.2,]
dim(df2)


## % of missing per genotypes/samples
pmg <- apply(df1, 2, function(gid) sum(is.na(gid)) / length(gid))
length(pmg)

## dropping bad genotypes/ samples 
df3 <-  data.frame(marker=df2[,1], df2[,pmg <= .2][,-1])
dim(df3)

当我在 FILTER 2 中运行此代码时;

> pms <- apply(df1[pmg <= .2, ], 1,
>              function(snp) sum(is.na(snp)) / length(snp))

它给了我这个错误:

[.data.frame(df1, pmg

如您所见,我切换了几个步骤,因此代码也应该修改才能正常工作。但我不知道怎么做。

【问题讨论】:

据我所知,您在定义之前尝试使用pmg。也许也可以将pmg &lt;- apply(… 代码行上移 【参考方案1】:

您需要在使用之前定义pmg。 只需将此部分移至代码顶部即可:

## % of missing per genotypes/samples
pmg <- apply(df1, 2, function(gid) sum(is.na(gid)) / length(gid))
length(pmg)

【讨论】:

是的,我这样做了,但我的控制台中的结果是一样的。所以基本上它是相同的过滤器,因为它给出了相同的结果

以上是关于R中缺失数据的百分比给出错误的主要内容,如果未能解决你的问题,请参考以下文章

堆叠条形图将变量转换为ggplot2 R中不相关变量的基于存在缺失的百分比

pandas使用pct_change计算数据列的百分比变化环比变化率:计算当前元素和前一个元素之间的百分比变化使用style函数指定format的格式:百分比缺失值替换用颜色标注极大值和极小值

在 R 中使用 hist() 函数来获取百分比而不是原始频率

在 Python Pandas 中聚合组并从某个计数中吐出百分比

在 Python Pandas 中聚合组并从某个计数中吐出百分比

python 检查缺失值的百分比和df列中的孔的趋势以及它们是否连续。