【问题标题】:How do I impute missing values with row mean?如何用行均值估算缺失值?
【发布时间】:2021-06-09 03:58:13
【问题描述】:

我想使用行均值来估算 VPS8 的缺失值。

考虑cmets后,修改如下:

VPS8 <- data.frame(YAL002W=as.numeric(cdc15["YAL002W",]))
ind <- which(is.na(VPS8), arr.ind=TRUE)
VPS8[ind] <- rowMeans(VPS8, na.rm=TRUE)[ind[,1]]

返回值为:

num[1:6] NaN NaN NaN NaN NaN NaN

所需的输出 用行均值估算缺失值并另存为。

【问题讨论】:

  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。图片不是共享数据/代码的正确方式。

标签: r bioinformatics missing-data


【解决方案1】:

对于该错误,请尝试将 VPS8 转换为数据帧。 编辑:

VPS8 <- data.frame(YAL002W=as.numeric(cdc15["YAL002W",]))
time <- as.numeric(row.names.data.frame(VPS8))
df <- data.frame(VPS8,time)
ind <- which(is.na(df), arr.ind=TRUE)
df[ind] <- rowMeans(df, na.rm=TRUE)[ind[,1]]

检查这是否有效

【讨论】:

  • 按照您的建议,错误消失了。但是,df[ind] &lt;- rowMeans(df, na.rm=TRUE)[ind[,1]](我的最后一行代码)给出了错误:rowMeans(df, na.rm = TRUE) 中的错误:'x' must be numeric
  • df 数据框中的一个列不是数字格式。这就是错误的原因。您可以将 cols 转换为数字格式。
  • 你能告诉我你想要的输出吗?所以我可以清楚地发布答案。您可以编辑您的问题并添加所需的输出。
  • 当我尝试将 ind 转换为数字时,我收到错误 Error in which(is.na(as.numeric(VPS8)), arr.ind = TRUE) : 'list' object cannot be coerced to type 'double'
  • @mellio 编辑了答案。请检查
猜你喜欢
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 2014-06-23
  • 2017-06-23
  • 2019-08-16
  • 2014-04-12
  • 2019-12-19
相关资源
最近更新 更多