【问题标题】:Conditional sum when value negative [duplicate]值为负时的条件总和[重复]
【发布时间】:2018-05-06 05:52:02
【问题描述】:

我是 R 新手。我正在研究如何制定条件语句。

如果列中的值为负数,则应加起来 86400。

有什么想法吗?

【问题讨论】:

  • case_when 来自dplyr
  • ifelse来自base R
  • 请看我的回答。下次,请分享您的数据集的可重现示例。否则,您可能会收到反对票,最重要的是,人们可能无法为您提供帮助。

标签: r


【解决方案1】:

假设您的实际数据集是一个数据框,以下将起作用。需要指定列(本例中为b列)并使用ifelse判断值是否小于0,如果TRUE则加86400,否则返回原值。

# Create an example data frame
dt <- data.frame(a = "a", b = -3:3)
dt
#   a  b
# 1 a -3
# 2 a -2
# 3 a -1
# 4 a  0
# 5 a  1
# 6 a  2
# 7 a  3

# Add 86400 to negative value in column `b`
dt$b <- ifelse(dt$b < 0, dt$b + 86400, dt$b)
dt
#   a     b
# 1 a 86397
# 2 a 86398
# 3 a 86399
# 4 a     0
# 5 a     1
# 6 a     2
# 7 a     3

上面的代码也可以写成如下。

dt$b <- with(dt, ifelse(b < 0, b + 86400, b))

【讨论】:

    【解决方案2】:

    类似:

    df[,'col']=df[,'col']+ifelse(df[,'col']<0,86400,0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多