如果日期为R的语句

时间:2018-03-12 19:02:41

标签: r

如果学生在2017年8月15日至2017年11月30日的时间段内注册了20天或更多天,我想在我的数据框((FallCount))中创建一个新列TowpathMerge。如果他们是,FallCount会读为是。如果没有,FallCount会读不。 EffectiveStartDateFS是学生注册的时间。 DistrictWithdrawDateFS是学生退学的时候。

例如,Joshua King在Fall Count中会有Yes,因为他开始上学August 14,但直到January of 2018才退出。怀特也算是因为他于8月21日开始上学,但在9月28日后退出了20多天。另一方面,克拉克不会算,因为她在August 21开始上学,但退出了August 29

enter image description here

2 个答案:

答案 0 :(得分:0)

哟需要将日期表示为日期,基数为R或包含诸如lubridate之类的包裹。 例如

Lowest <- mdy("August 15,2017") 

或您使用的任何格式。

您可以像处理其他数量一样工作。

TowpathMerge$FallCount  <- ifelse(time1>=Lowest & 
   time2>=Highest & (time2-time1) >=20, TRUE, FALSE )

将TowpathMerge $添加到变量中。

答案 1 :(得分:0)

您只需要将字符数组中的日期转换为R的日期对象。之后,只需减去它们并评估其结果即可。

假设df是data.frame的名称,如果差异大于20,则此语句将TRUE FALSE

df$FallCount <- as.difftime(as.Date(df$DistrictWithdrawDateFS, "%Y-%m-%d") - as.Date(df$EffectiveStartDateFS, "%Y-%m-%d"), units = "days") > 20

注意:这不会处理任何一个日期NA的情况。您可能希望添加自己的逻辑来处理这种情况。