r - 将 Excel 日期转换为日期,同时在同一列中保留“非日期”字符串
问题描述
我的数据集中有一个包含日期和文本的特定列。因此,我使用的 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 更改为指定日期并保持“打开”状态?我应该使用 read_xls 以外的东西吗?
免责声明:我正在使用大型数据集,因此手动拆分列是不切实际的,例如:
> x1<- c(43347, 43348)
> y1<- c("OPEN")
想象一下这个具有 1500 多个值的向量。
解决方案
这是你想要的?
数据:
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"
推荐阅读
- scala - sbt 程序集错误:重复:在 io.netty.versions.properties 中找到不同的文件内容
- android - 连接到 Firebase 后,Android 应用开始崩溃
- c# - 如何使用 C# 从本地计算机读取 csv 文件并在 asp.net 中显示数据而不保存在服务器上?
- linux - RPM 与基于 Tar 的安装
- php - 如何修复无效字符的 github oauth 令牌:“__TOKEN__”?
- ios - 将 UILabel 文本对齐设置为中心在 iOS 中从阿拉伯语的英语语言环境切换不起作用
- sql - PL/SQL:使用 oracle 函数忽略 SQL 语句
- c# - Chrome 原生消息传递,与原生消息传递主机通信时出错
- javascript - 将多个/未知数量的变量传递给 JavaScript 一个参数?
- sql - SQL/PySpark:创建一个包含过去 n 天的行数的新列