如何使用不同的值替换数据框列中的负值

时间:2018-06-01 23:10:02

标签: r dataframe

我在R中有一个大的数据帧,接近一百万行和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

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

3 个答案:

答案 0 :(得分:1)

尝试:

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

答案 1 :(得分:0)

我会用

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

答案 2 :(得分:0)

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

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