【发布时间】:2018-02-16 12:06:41
【问题描述】:
我有一个如下所示的 R 数据框,其中包含所有数字列。所有非 NA 值都大于/等于 1 或小于 -1。我想从所有正值中减去 1 并将所有负值加 1,忽略所有 NA。
我的输出数据框应该如下所示
我知道如何用零替换 NA,反之亦然
df[is.na(df)] <- 0
df[df==0] <- NA
我也尝试了类似的方法来解决我的问题
df[df >= 1] <- df - 1
df[df < -1] <- df + 1
得到一个错误'value'的长度错误。 ifelse也试过了
df <- ifelse(df >= 1, df - 1, df + 1)
这是从所有值(包括负数)中减去 1。 也分别尝试了 if 和 else
if(df >= 1){
df <- df - 1
}else if(df < -1){
df <- df + 1
}
这也是从所有中减去 1。我以前用其他语言编程过,对 R 比较陌生。在这方面需要帮助。我的实际数据框有 1000 多列。
我找到了一个类似的question on stackoverflow,但答案是使用特定的列索引,这在我的情况下是不可能的。
【问题讨论】: