我是R的新手,我的数据框包含start_date,日差和状态,我想要做的是使用Sys.Date()减去start_date来检查状态失败时的天差,以及何时状态通过日期计数将停止并显示固定的日差。
data.frame:
Start_Date Difference Status
1/1/2018 16 Fail
1/1/2018 16 Fail
1/1/2018 16 Pass
1/1/2018 16 Pass
5/1/2018 12 Fail
5/1/2018 12 Fail
5/1/2018 12 Fail
5/1/2018 12 Pass
10/1/2018 7 Pass
10/1/2018 7 Pass
10/1/2018 7 Pass
10/1/2018 7 Fail
所以两天后,它将如下所示:
expected data.frame:
Start_Date Difference Status
1/1/2018 18 Fail
1/1/2018 18 Fail
1/1/2018 16 Pass
1/1/2018 16 Pass
5/1/2018 14 Fail
5/1/2018 14 Fail
5/1/2018 14 Fail
5/1/2018 12 Pass
10/1/2018 7 Pass
10/1/2018 7 Pass
10/1/2018 7 Pass
10/1/2018 9 Fail
我今天使用了Sys.Date(),因此传递状态行将保持日期差异,失败状态行将保持日期计数。 我累了:
If (df$Status == "Pass") { df$Difference <- "I have not idea" } else { df$Difference <- Sys.Date()-df$Start_Date }
类似的东西,任何建议?感谢。
答案 0 :(得分:0)
如果给定一个向量(例如,尝试if(c(T,F)){print(1)}else{print(2)}
和if(c(F,T)){print(1)}else{print(2)}
),语句仅评估第一个元素,因此您需要以元素方式查看它们。
我假设通过和失败是以另一种方式设置的,您只是想在状态更新后更新差异?如果是这样的话,我建议使用dplyr的mutate和base的ifelse。
如果Status ==&#34; Fail&#34;这会改变差异中的值。并以其他方式保留原样。如果需要整数,也可以使用difftime添加一个圆。
df <- df %>%
mutate(Difference = ifelse(Status == "Fail", difftime(Sys.time(),Start_Date, unit = "days"), Difference))