【问题标题】:Aggregate and NA values [duplicate]聚合和na值[重复]
【发布时间】:2018-05-17 22:35:07
【问题描述】:

我有一个包含 1000 个观察值的数据框。
对于每个观察值,我有五个变量。现在我想创建一个新变量,它是这 5 个变量的聚合。
我输入了以下内容:

df$aggr_variable <- (1/5)*(var1+var2+var3+var4+var5)

然后我得到了新的聚合变量,但也有问题。如果假设观察 839 在var2 中有一个缺失值NA,但其他四个变量的值仍然存在,它会在聚合变量中给我NA

当一个变量包含 NA 时,如何在不漏掉整个观察结果的情况下留下五个变量的 NA?

【问题讨论】:

  • df$aggr_variable &lt;- rowMeans(df, na.rm = TRUE)
  • 很好,它有效,谢谢!现在,如果我只想聚合 var 1、var3 和 var4,我怎么能只使用这些而忽略 var2 和 var5?因为 rowMeans 使用了所有手段,所以这行不通...
  • rowMeans(subset(df, select = c("var1", "var3", "var4")), na.rm = TRUE)

标签: r variables aggregate na


【解决方案1】:

根据您的聚合方程,您正在计算每个样本(行)的这五个变量的平均值。

#some reproduciable data
df <- data.frame(var1=rnorm(20,10,5),var2=rnorm(20,5,1),var3=rnorm(20,30,1),
                 var4=rnorm(20,0,1),var5=rnorm(20,3,3))
#generates some NAs:
df[11,5] <- NA
df[8,3] <- NA
df[9,1] <- NA
df[17,2] <- NA
df[11,2] <- NA

#aggregate by mean
df$aggr_variable <- apply(df,1,function(x){mean(x,na.rm=T)})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2018-02-26
    • 2021-07-30
    • 2015-07-04
    相关资源
    最近更新 更多