我正在使用haven::read_sas
读取sas数据集,我遇到了应该是日期但被读取为数字的列的问题。
是否有一种方法可以指定何时使用read_sas()
来解释列X
为字符或日期?如果有帮助的话,sas数据集中的条目是YYYYMM
形式的,所以像202003
和read_sas
这样的东西将它们作为数字接收。
应该提到这个日期列被错误地读入(数字混乱),所以仅仅使用as.Date
或as.character
修改列后不工作。例如,202005
被读取为22036
。
SAS使用1960年1月1日作为起始日期,并且所有日期都是表示起始日期和指定日期之间天数的数值。1960年1月1日之前的任何日期都是负数,之后的任何日期都是正数。使用haven
导入数据后,您可以使用此origin将其格式化为日期。
x <- 22036
as.Date(x , origin = "1960-01-01")
#> [1] "2020-05-01"
关于SAS日期文档,您可以在这里看到。