【问题标题】:Calculating a mean from a data frame with blanks with R用R计算带有空白的数据框的平均值
【发布时间】:2021-01-16 19:54:48
【问题描述】:

我有一个在不同位置有空白的数据框。我想计算行的平均值,但我不知道如何根据行使 n 灵活。

所有列的行数相同。

平均值 = 总和/n

df1 <- data.frame(col1 = c(5, 9, NA, -0.9, -0.74, , 1.19, , -1, -0.4, 1.38, -1.5, 1, 0.64), 
                  col2 = c(4, 2, -9, 4, 19, 31, 4, -8, -15,NA,NA,NA,NA,NA),
                  col3 = c(1, -2, 5, 1.1, 33, 2, 7, 1, 1, 16, -22, - 2, -3,-10))

因此,对于第 1 行:

5+4+1 = 9/3 = 3

但对于第 3 行: (-9) + 5 = -4/2 = -2

非常感谢您的帮助!

【问题讨论】:

  • 你可以省略缺失值:rowMeans(df1, na.rm=TRUE)
  • 当我尝试这样做时,我收到一个错误:“rowMeans(df1, na.rm = TRUE) 中的错误:'x' 必须是数字。”我的值是除了空格之外的数字,如果这意味着什么。
  • 既然你有那些“空白”(-0.74, ,1.19),你应该将它们转换为 NA,看看这篇文章:stackoverflow.com/questions/24172111/…。如果您从文件(例如 csv)中读取数据帧,您可以使用 na.strings 参数在线完成。

标签: r dataframe mean


【解决方案1】:

如果您的数据中有空格,即使它看起来是数字,也会将您的数据转换为字符。将它们转换为NA,将列转换为数字,然后取平均值。

df[df == ''] <- NA
df[] <- lapply(df, as.numeric)
df$rowMean <- rowMeans(df, na.rm = TRUE)

【讨论】:

    【解决方案2】:

    试试这个:

     df1 <- data.frame(col1 = as.numeric(c(5, 9, NA, -0.9, -0.74, NA , 1.19, 2 , -1, -0.4, 1.38, -1.5, 1, 0.64)), 
                      col2 = as.numeric(c(4, 2, -9, 4, 19, 31, 4, -8, -15,NA,NA,NA,NA,NA)),
                      col3 = as.numeric(c(1, -2, 5, 1.1, 33, 2, 7, 1, 1, 16, -22, -2, -3,-10)))
    
     rowMeans(df1, na.rm=TRUE)
    

    有可能,尽管您的数据是数字,R 将它们作为字符读入。

    【讨论】:

    • 当我尝试这样做时,我得到了这个错误:is.data.frame(x) 中的错误:'list' 对象不能被强制输入'double' 我也尝试使用 as 将其取消列出。数字(未列出(df1))。两者似乎都不起作用。
    • dft1 &lt;- data.frame(col1 = as.numeric(c(5, 9, NA, -0.9, -0.74, NA , 1.19, 2 , -1, -0.4, 1.38, -1.5, 1, 0.64)), col2 = as.numeric(c(4, 2, -9, 4, 19, 31, 4, -8, -15,NA,NA,NA,NA,NA)), col3 = as.numeric(c(1, -2, 5, 1.1, 33, 2, 7, 1, 1, 16, -22, -2, -3,-10)))
    • 你可以试试这个。并使每一列数字化。这应该可以,但是有点工作
    • 好像您创建了一个名为 dftest 的数据框,然后在名为 df1 的东西上运行 rowmeans。
    • 我很抱歉。它应该是 df1
    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2017-12-05
    • 1970-01-01
    • 2017-11-11
    • 2021-04-30
    • 2014-01-28
    相关资源
    最近更新 更多