R 如何在计算平均值时去除NA?
您可以看到,每当我们有R 如何在计算平均值时去除NA?,r,R,您可以看到,每当我们有NA时,返回的结果就是NA。我想计算b和c之间的平均值,如果两者都有值,但如果b或c中的任何一个有NA,那么只需返回b或c的值。预期的结果将是: b=c(1,4,3,NA) c=c(NA,4,3,8) res=(b+c)/2 NA 4 3 NA 我们可以在cbind之后使用rowMeans对向量“b”、“c”进行排序,以创建矩阵行表示有选项(na.rm=TRUE)来处理na值 res 1 4 3 8 或col表示rbinding向量后的 rowMeans(cbind(b
NA
时,返回的结果就是NA
。我想计算b和c
之间的平均值,如果两者都有值,但如果b或c
中的任何一个有NA,那么只需返回b或c
的值。预期的结果将是:
b=c(1,4,3,NA)
c=c(NA,4,3,8)
res=(b+c)/2
NA 4 3 NA
我们可以在
cbind
之后使用rowMeans
对向量“b”、“c”进行排序,以创建矩阵
<代码>行表示有选项(na.rm=TRUE
)来处理na
值
res
1 4 3 8
或col表示rbind
ing向量后的
rowMeans(cbind(b,c), na.rm=TRUE)
假设我们有矩阵而不是向量,我们仍然可以在遍历其中一个数据集的列/行(假设它们具有相同的维度)后执行
rowMeans/colMeans
。比如说,
colMeans(rbind(b,c), na.rm=TRUE)
另一种替代循环的方法是用0
替换两个数据集中的NA
元素。为此,我们可以使用replace
,进行+
运算,并根据每个位置的NA
元素计数进行除法
m1 <- sapply(seq_len(ncol(b)), function(i)
rowMeans(cbind(b[,i], c[,i]), na.rm=TRUE))
m1
# [,1] [,2]
#[1,] 1 1.5
#[2,] 4 3.0
#[3,] 3 3.0
#[4,] 8 3.0
我们可以在
cbind
之后使用rowMeans
对向量“b”、“c”进行排序,以创建矩阵
<代码>行表示有选项(na.rm=TRUE
)来处理na
值
res
1 4 3 8
或col表示rbind
ing向量后的
rowMeans(cbind(b,c), na.rm=TRUE)
假设我们有矩阵而不是向量,我们仍然可以在遍历其中一个数据集的列/行(假设它们具有相同的维度)后执行
rowMeans/colMeans
。比如说,
colMeans(rbind(b,c), na.rm=TRUE)
另一种替代循环的方法是用0
替换两个数据集中的NA
元素。为此,我们可以使用replace
,进行+
运算,并根据每个位置的NA
元素计数进行除法
m1 <- sapply(seq_len(ncol(b)), function(i)
rowMeans(cbind(b[,i], c[,i]), na.rm=TRUE))
m1
# [,1] [,2]
#[1,] 1 1.5
#[2,] 4 3.0
#[3,] 3 3.0
#[4,] 8 3.0
首先,使用函数
rowMeans
,第二次使用na.rm=T
。首先,使用函数rowMeans
,第二次使用na.rm=T
。谢谢@akrun假设b
是一个矩阵,而c
是一个矩阵。我们如何应用您的解决方案?。事实上,我的真实数据是矩阵,但我给出了一个简单的例子。@temor它取决于b
的维度。你能再具体一点吗?假设nrow(b)
与c
的长度相同。然后我们可以cbind
两者并获得行的意思。如果ncol(b)
与c
的length
相同,我们将rbind
它。b的尺寸与c的尺寸相似。b的dim是1000列*500行,c的dim是1000列*500行。@temor Trysapply(seq_len(ncol(b)),function(i)rowMeans(cbind(b[,i],c[,i]),na.rm=TRUE))
谢谢@akrun如果b
是矩阵而c
是矩阵该怎么办。我们如何应用您的解决方案?。事实上,我的真实数据是矩阵,但我给出了一个简单的例子。@temor它取决于b
的维度。你能再具体一点吗?假设nrow(b)
与c
的长度相同。然后我们可以cbind
两者并获得行的意思。如果ncol(b)
与c
的length
相同,我们将rbind
它。b的尺寸与c的尺寸相似。b的尺寸为1000列*500行,c的尺寸为1000列*500行。@temor Trysapply(序号(ncol(b)),函数(i)行表示(cbind(b[,i],c[,i]),na.rm=TRUE))