【问题标题】:Comparing two columns and replace in R Package比较两列并在 R 包中替换
【发布时间】:2017-02-16 22:00:09
【问题描述】:

我在使用 for 循环时遇到问题。我的问题是:如果两列相等(有 176 或 184 或 180 或 182 或 163 或 167 值)替换两列 =NULL

我写了脚本,但它不起作用。

for (i in dane.dzikie$REN75M10 && dane.dzikie$REN75M10.1) if (i==176 | 184 | 180 | 182 |
                                                          163 | 167) {i=NULL}

这是我数据的一部分: enter image description here

我想替换第一列、第五列和最后一列应该替换为 NA,因为两列都包含 176 或 184 或 180 或 182 或 163 或 167 值。两列中的条件是相同的值。

【问题讨论】:

  • 请阅读如何提问以及如何提供可重复的示例。请记住,R 是矢量化的。大多数时候,for 循环不是答案。
  • 此外,您不能将| 用作数字的“或”(或&& 用于任何这些变量),只能用于已经是布尔值的事物。相反,请使用i %in% c(176, 184, ...)。而且您不能(轻松)将NULL 放入data.frame;你可能是指NA

标签: r loops for-loop replace compare


【解决方案1】:
# example dataframe something like this?
dane.dzikie <- data.frame(REN75M10=c(176, 184, 5, 6, 7), 
                          REN75M10.1=c(163,1,2,3,4), OTHER=c(163,2,3,4,5))

columns=c("REN75M10", "REN75M10.1")
invalid.values <- c(176,184,180,182,163,167)
dane.dzikie[,columns] <- 
   apply(dane.dzikie[,columns], 2, 
         function(x) ifelse(x %in% invalid.values, NA, x))                           

【讨论】:

  • 它类似于我的问题,但它应该看起来像这样:如果我在行中有两个值,例如176 它应该替换为 NA。仅当 176 在同一行的两列中时。
猜你喜欢
  • 2021-04-07
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 2018-04-18
  • 2021-11-17
  • 2022-11-16
相关资源
最近更新 更多