我们说我有一个像这样的矩阵:
df <- matrix(data = c(1,2,9,3,7,NA,4,NA,NA,NA,NA,NA), nrow=4, ncol=3, byrow=T)
我想要计算的是当行不允许有多个NA时矩阵的行 - 均值。在这种情况下,最终结果将是四个组件的向量,更具体地说是c(4,5,NA,NA)
。
我可以制作符合要求的单独载体:
df1 <- df[c(which(rowSums(is.na(df))<=1)),]
df2 <- df[c(which(rowSums(is.na(df))>1)),]
rowMeans(df1, na.rm=T)
rowMeans(df2, na.rm=F)
但我似乎无法想出一个只有一个载体的好方法。
答案 0 :(得分:2)
我们可以将包含超过1个NAs的行分配给NA,然后使用rowMeans
na.rm=TRUE
df[rowSums(is.na(df))>1,] <- NA
rowMeans(df, na.rm=TRUE)
或者我们可以一步到位
rowMeans(df, na.rm=TRUE)*NA^(rowSums(is.na(df))>1)
或另一种选择是创建获取rowMeans
i1 <- !rowSums(is.na(df))>1
ifelse(i1, rowMeans(df, na.rm=TRUE), NA_real_)