如果学生在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
。
答案 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
的情况。您可能希望添加自己的逻辑来处理这种情况。