小编iva*_*nge的帖子

r 中多列的条件均值

我们用这个mtcars来说明一下情况。

我想要做的与下面的多列相同。qsec获得一列(在示例中)相对于具有特定值(4 和 6,在下面的示例中)的另一列的平均值。我稍后会比较结果,所以也许我会将结果存储在向量中

table(mtcars$cyl)
4  6  8
11  7 14

mean(mtcars$qsec[mtcars$cyl == 4], na.rm = T)
mean(mtcars$qsec[mtcars$gear == 4], na.rm = T)
Run Code Online (Sandbox Code Playgroud)

我想检查qsec关于的方法cyl,让我们说gearcarb,对于均值具有相同的“模式”,即观察值的平均值为 4 和观察值的平均值为 6。在真实的数据集中,将有几列具有相同的集合数字(2、0 和 1)。我将比较列的均值(在示例中qsec)与观测值 2 和 0。

我尝试查看诸如tapply, apply,之类的函数sapply。但我坚持将条件平均应用于每一列(一次)。

希望我说清楚了。谢谢你!

aggregate r mean dataframe tapply

3
推荐指数
1
解决办法
4290
查看次数

如何在R中的所有列中应用“for循环”?

我有这些数据和我创建的for,用于根据条件(if)转换列中的所有元素。(我知道还有更多方法可以做到这一点......)

这里是:

S1 <- c(0,1,1,0,0,2,2,1,1,1,1,1,0)
S2 <- c(2,1,0,1,0,2,1,1,0,1,2,2,1)
S3 <- c(0,1,0,0,1,2,0,1,2,1,2,0,2)
S4 <- c(2,1,0,2,1,2,2,1,2,1,2,2,0)

df <- data.frame(S1,S2,S3,S4)

for (i in 1:nrow(df)){
  if(df[i,1] == 0){
    df[i,1] <- "A/A"
  }
  if(df[i,1] == 1){
    df[i,1] <- "A/T"
  }
  if(df[i,1] == 2){
    df[i,1] <- "T/T"
  }
  if(df[i,1] == "NaN"){
    df[i,1] <- 0
  }
}
Run Code Online (Sandbox Code Playgroud)

这是实际情况:

S1  S2  S3  S4
0   2   0   2
1   1   1   1
1   0   0   0
Run Code Online (Sandbox Code Playgroud)

当我运行for时,它仅适用于第一列,因为我描述了df[i,1]. 问题是,如何同时对所有列执行此操作?我有办法解决这个问题吗?

谢谢

for-loop if-statement r multiple-columns

2
推荐指数
1
解决办法
816
查看次数