【问题标题】:replace NA with data from another column in R用 R 中另一列的数据替换 NA
【发布时间】:2015-05-14 03:58:44
【问题描述】:

我知道如何使用以下代码制作NA 的空白:

 IMILEFT   IMIRIGHT     IMIAVG
      NA         NA         NA
      NA   71.15127         NA
72.18310   72.86607   72.52458
70.61460   68.00766   69.31113
69.39032   69.91261   69.65146
72.58609   72.75168   72.66888
70.85714         NA         NA
      NA   69.88203         NA
74.47109   73.07963   73.77536
70.44855   71.28647   70.86751
      NA   72.33503         NA
69.82818   70.45144   70.13981
68.66929   69.79866   69.23397
72.46879   71.50685   71.98782
71.11888   71.98336   71.55112
      NA   67.86667         NA

IMILEFT <- ((ASLCOMPTEST$LHML + ASLCOMPTEST$LRML)/(ASLCOMPTEST$LFML +   
             ASLCOMPTEST$LTML)*100)
IMILEFT <- sapply(IMILEFT, as.character)
IMILEFT[is.na(IMILEFT)] <- ""

但是,当我执行该代码时,它不允许我对“IMILEFT”和“IMIRIGHT”进行平均,或者使“IMIAVG”与具有数值的其他列相同。

IMIAVG<-((IMILEFT + IMIRIGHT)/2)

IMILEFT + IMIRIGHT 中的错误:二元运算符的非数字参数

如果我把它设为as.numeric也会出现同样的错误

【问题讨论】:

  • 我是这个论坛的新手,但我很困惑为什么这个问题被编辑了,我的礼貌(最后说谢谢)被删掉了。我要感谢所有查看过此问题并已经或将要回复的人。
  • 你好,欢迎来到我的问题,谢谢,请帮助,等等这些部分通常不需要。礼貌是隐含的,如果由于其他原因需要编辑问题,通常会删除问候/友好。不要个人认为:-)
  • @thelatemail 我不太确定这里的树林是否暗示礼貌;)我看到了一些非常粗糙的边缘
  • @ricardosaporta - 嘘......这是暗示的,但并不总是被实践。

标签: r math average na sapply


【解决方案1】:

试试下面的。让NAs 保持原样

rowSums(M, na.rm=TRUE) / 2 - (is.na(L) + is.na(R))

## WHERE
M = cbind(IMILEFT,   IMIRIGHT)
L = IMILEFT   
R = IMIRIGHT

如果你的行都是 NA,那么分母是

pmin(1, 2 - (is.na(L) + is.na(R)))

【讨论】:

  • 不幸的是@ricardo 这不起作用。它使列 -2.0000
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 2021-07-29
  • 1970-01-01
  • 2016-09-09
  • 2022-01-03
相关资源
最近更新 更多