【发布时间】:2020-12-25 19:11:12
【问题描述】:
我目前正在尝试创建一个新变量以返回两个变量的最早日期。我使用了pmin() 函数,并且在both 变量中有可用日期的情况下没有问题。在 一个变量 上缺少日期,而另一个变量中缺少日期的情况下,理想情况下,我希望代码返回后一个变量中的日期。相反,返回的是 NA,我还没有想出如何解决这个问题。
我的代码如下:
df = data.frame(ID = c(1001, 1002, 1003, 1004, 1005),
disease_code = c('1', '1' ,'0', '1','0'),
Date_of_diagnosis_1 = c(NA,'13/06/1997',NA,'18/02/2005',NA),
Date_of_diagnosis_2 = c('12/06/1998',NA,NA,'18/09/2001',NA))
df$Date_of_diagnosis_1 <- as.Date(df$Date_of_diagnosis_1, format="%d/%m/%Y")
df$Date_of_diagnosis_2 <- as.Date(df$Date_of_diagnosis_2, format="%d/%m/%Y")
df <- transform(df, earliest_date = pmin(Date_of_diagnosis_1,
Date_of_diagnosis_2, na.rm=TRUE))
更新:用户 Duck 和 Wimpel 突出显示了 na.rm 的位置错误。上面的代码现在可以正常工作了。
【问题讨论】:
-
您的样本数据不正确...
-
目前您的日期是字符串。
18/20/2005是几号日期? -
also.. try:
df <- transform(df, earliest_date = pmin(Date_of_diagnosis_1, Date_of_diagnosis_2, na.rm=TRUE) ).... 在您的代码中,na.rm = TRUE的位置错误。 -
pmin()即使使用NA也应该可以工作,您必须在transform()中的pmin()中传递na.rm=T -
抱歉,这里已经更新了!感谢你们发现 na.rm=T 的位置错误。