【问题标题】:How to replace negative values in a dataframe column with a different value如何用不同的值替换数据框列中的负值
【发布时间】:2018-06-01 23:10:02
【问题描述】:

我在 R 中有一个大型数据框,其中有近 100 万行和 91 列。对于一个特定的列,我需要将所有负值替换为“值 + 360”。

所有 0 或正值应保持不变。

有许多将负值设置为 0 或 NA 的解决方案,但我无法完全做到这一点。

以下是我的尝试示例,数据框名为df,功能名为Bearing

df$Bearing = apply(df$Bearing, 2, function(x){x[x<0] = x[x+360]})

df$Bearing[df$Bearing <0] <- df%Bearing +360

实现我的目标的最佳方法是什么?

【问题讨论】:

  • 你可以试试ifelse

标签: r dataframe


【解决方案1】:

试试:

df$Bearing[df$Bearing <0] <- df$Bearing[df$Bearing <0] +360

【讨论】:

  • 谢谢,卢克。我认为您的解决方案中有一个小错误(% 而不是 $),但这是一个优雅而简单的解决方案,对我来说效果很好,非常感谢。
  • 好发现!固定在上面
【解决方案2】:

我会用

df <- within(df, Bearing <- Bearing + ifelse(Bearing < 0, 360, 0))

【讨论】:

    【解决方案3】:

    如果由于 data.frame 的大小而导致速度成为问题,请考虑使用data.table

    library(data.table)
    setDT(df)
    df[, bearing := ifelse(bearing < 0, bearing + 360, bearing)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 2020-06-23
      • 2022-11-16
      • 2021-06-29
      • 1970-01-01
      • 2023-01-24
      相关资源
      最近更新 更多