将Excel日期转换为日期,同时在同一列中保留“非日期”字符串

时间:2018-09-19 14:26:53

标签: r excel date

我的数据集中有一个包含日期和文本的特定列。因此,我正在使用的read_xls函数将整个列导入为“字符”类。因此,日期将还原为excel中的基础日期代码(43348、43347等)。

我的数据示例和我要完成的任务如下:

> x<- c("43347", "43348", "OPEN")
> x<- as.Date(x, format = "%m/%d/%Y", origin = "1899-12-30")

结果是x中的所有值都变为“ NA”。

有人知道我如何指示R仅将43347和43348更改为其指定的日期,并保持“ OPEN”不变吗?我应该使用read_xls以外的其他东西吗?

免责声明:我正在处理一个大型数据集,因此像这样手动拆分列并不现实:

> x1<- c(43347, 43348)
> y1<- c("OPEN")

想象一下这个向量有1500多个值。

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

数据:

x <- c("43347", "43348", "OPEN")

代码:

ifelse(is.na(as.numeric(x)),x, as.character(as.Date(as.numeric(x), origin = "1899-12-30")))

结果:

#[1] "2018-09-04" "2018-09-05" "OPEN"    

更快的版本:

IND <- !is.na(as.numeric(x))
x[IND] <- as.character(format(as.Date(as.numeric(x[IND]), origin = "1899-12-30"), format = "%m/%d/%Y"))
remove(IND)
x
#[1] "09/04/2018" "09/05/2018" "OPEN"