繁体   English   中英

忽略 NA,以便我可以为负数添加价值

[英]Ignore NAs so that I can add value to negative numbers

我有一列是睡眠小时数,它是通过从 got_to_slepp 列中减去一个 wake_up 列而创建的 - 但是,我得到的是负数,因为 difftime 没有认识到 PM 值是第一天的,而 AM 数字是次日。

我意识到,从数学上讲,如果我可以将 24 加到负值上,我就会得出正确的小时数。

但是,因为我有 NA 值,所以我只能用 0 或 NA 替换负值,并且当我尝试添加 24 时出现错误。

例子:

df$hours_slept[df$hours_slept < 0] <- d5_df$hours_slept + 24 

这给了我错误:

NextMethod 中的错误(“[<-”):下标分配中不允许 NA

我尝试添加.is.na 但这并没有像我想象的那样工作

谢谢

您可以像这样使用ifelse

set.seed(1234)
df <- data.frame(hours_slept = sample(seq(-12,12, .1),20, replace=TRUE))
df$hours_slept[sample(1:20,8)] <- NA
df
#>    hours_slept
#> 1         -9.3
#> 2         -4.1
#> 3           NA
#> 4           NA
#> 5         11.5
#> 6         -1.0
#> 7          1.6
#> 8           NA
#> 9          4.5
#> 10          NA
#> 11         1.1
#> 12        -2.3
#> 13          NA
#> 14         9.3
#> 15          NA
#> 16        -5.1
#> 17        -4.2
#> 18         8.5
#> 19          NA
#> 20          NA
df <- transform(df, hours_slept=ifelse(hours_slept < 0, -hours_slept, hours_slept))
df
#>    hours_slept
#> 1          9.3
#> 2          4.1
#> 3           NA
#> 4           NA
#> 5         11.5
#> 6          1.0
#> 7          1.6
#> 8           NA
#> 9          4.5
#> 10          NA
#> 11         1.1
#> 12         2.3
#> 13          NA
#> 14         9.3
#> 15          NA
#> 16         5.1
#> 17         4.2
#> 18         8.5
#> 19          NA
#> 20          NA

代表 package (v2.0.1) 于 2022 年 7 月 26 日创建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM