问题描述
我当前正在尝试创建一个新变量,以在两个变量之间返回最早的日期。我已经使用了pmin()函数,并且在两个变量中都有可用日期的实例中没有问题。在一个变量上缺少日期,而另一个变量上存在日期的情况下,理想情况下,我希望代码在后一个变量中返回日期。相反,返回了NA,但我还没有弄清楚如何解决这个问题。
我的代码如下:
b'-,\x2Dq\x2C\x07\x71\x94\x15\x01\x02\xb3\xb3\xb3\xb3\xb3'?
任何帮助将不胜感激!
更新:用户Duck和Wimpel强调了na.rm的位置错误。上面的代码现在可以按需工作了。
解决方法
这是data.table
的事物方式
library( data.table )
#make it a data.table
setDT(df)
#set dates as real date
cols = grep( "^Date",names(df),value = TRUE )
df[,(cols) := lapply( .SD,as.Date,format = "%d/%m/%Y"),.SDcols = cols]
#find minumum date in date-columns
df[,earliest_date := do.call( pmin,c( .SD,list( na.rm = TRUE ) ) ),.SDcols = cols ]
# ID disease_code Date_of_diagnosis_1 Date_of_diagnosis_2 earliest_date
# 1: 1001 1 <NA> 1998-06-12 1998-06-12
# 2: 1002 1 1997-06-13 <NA> 1997-06-13
# 3: 1003 0 <NA> <NA> <NA>
# 4: 1004 1 <NA> 2001-09-18 2001-09-18
# 5: 1005 0 <NA> <NA> <NA>