在某些条件下计算行 - 均值

时间:2016-05-20 15:59:18

标签: r

我们说我有一个像这样的矩阵:

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)

但我似乎无法想出一个只有一个载体的好方法。

1 个答案:

答案 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_)