我正在学习一些R和它在数据分析中的应用,所以很抱歉我的问题很愚蠢……
我正在分析一个数据框架与大量数据有关的蛋白质存在的一组细胞株从AMD安德森数据库。因此,我在datatable中作为行将细胞株和蛋白质作为数据("AMDDatabase")放在cols上。我需要使用相关来交叉这些数据,但是当我使用它时,它会给我一个错误“评估错误:不够有限的观察”。

actividad_protein_long <- gather(data = AMD_database, key = protein, value = level, -(1:5))
correlation_table <- na.omit(actividad_protein_long) %>%
group_by(protein) %>%
summarise(r = cor.test(rel_IC50_uM, level, method = "Kendall")$estimate,
p_value = cor.test(rel_IC50_uM, level, method = "Kendall")$p.value)据我所知,问题与结肠的数据数目有关,这个数字有很大的差异,我可以看到其中一些是在每个蛋白质的3个数据点以下,所以分析不能完成。
我如何过滤以前的数据,以便删除所有的数据,在三个观察下执行分析所需的数据?
我试过了
filteredData <- AMD_database[which(,colSums(!is.na(AMD_database)))>3]
filteredData <- AMD_database[which(AMD_database[,colSums(AMD_database)]>3)]但结局并不好。在使用相关性之前,如何使AMD_database中的所有列都包含足够的非NA值?还有比这更好的解决办法吗?这样绕开这个警告是正确的,还是我犯了一个很大的错误来避免它?
并且已经检查了:cor.test ,"not enough finite observations" How to ignore cor.test:“not enough finite observations” and continue, when using tidyverse and ggplot2 (ggpmisc) R cor.test : "not enough finite observations"
但是我不能使用"Purrl“包,因为这是打算在一个无法使用该包的服务器上共享的,而且我不确定我是否会像另一篇文章所告诉的那样绕过错误。
预先表示感谢:)
发布于 2017-09-07 11:03:33
如果我正确理解了问题,问题是每一列都有不同的缺失变量行。下面是我的粗略解决方案,对于每两列,它将检查它们共享的未丢失行的数量,并计算如果
## Creating data
dat <- replicate(100, rnorm(20))
# Adding NAs
dat[sample(2000, 700)] <- NA
cor.wrap <- function(dat) {
p <- ncol(dat)
cor.mat <- matrix(NA, ncol = p, nrow = p)
for (i in 1:(p - 1)) {
for (j in i:p) {
num.ind <- !is.na(dat[ ,i]) & !is.na(dat[ ,j])
cor.mat[i,j] <- ifelse(sum(num.ind) > 3,
cor.test(dat[num.ind, i], dat[num.ind, j])$statistic,
NA)
}
}
return(dat)
}
cor.wrap(dat)https://stackoverflow.com/questions/46092972
复制相似问题