r - 转换数据框R列中的日期
问题描述
我在将数据框中的一列导入日期(表示为不同日期格式的字符)转换为同一数据框中的日期对象时遇到问题。这是一个玩具示例:
xx <- data.frame(A = c(10, 15, 20), B = c("10/15/2010", "9/8/2015", "8/5/2013"))
如果我打印 xx,
A B
1 10 10/15/2010
2 15 9/8/2015
3 20 8/5/2013
我申请:
xx[, "B"] <- sapply(xx[, "B"], function(x) {as.Date(x,
format = "%m/%d/%Y", origin = "1970-01-01")})
我得到:
A B
1 10 14897
2 15 16686
3 20 15922
如果我查看 B 列的模式,它是数字,而不是日期。无论我尝试什么,我似乎都无法获得将 B 列转换为日期类型的结果。我总是可以补充:
xx[, "B"] <- as.Date(xx[, "B"])
但必须有一种方法可以在一个声明中做到这一点。
解决方案
如果你只有一列要转换,你可以做
xx$B <- as.Date(xx$B, "%m/%d/%Y")
如果您有多个列,请使用lapply
而不是sapply
cols <- 2
xx[cols] <- lapply(xx[cols], as.Date, "%m/%d/%Y")
或者使用lubridate
不需要指定格式参数的地方。
xx$B <- lubridate::mdy(xx$B)
推荐阅读
- c# - ASP .NET:在 AWS Elastic Beanstalk 中部署后未上传文件夹
- c - 程序只添加矩阵的第一行(并弄乱其他行)
- c++ - 通过 id 或 objectName 在 qml 中查找对象
- typescript - Css 属性和 TextStyle 类型
- java - 如何在 android 11 中制作自定义文件夹(App 文件夹)
- java - Firebase 按摩
- java - 在改造 android 中不会触发超时异常
- node.js - 除了数据库,在 express.js 应用程序中的哪里保存数据?
- javascript - 如何为我自己的可视化加载这个 html 文件?
- r - 在 R 中的另一个函数中调用该函数作为参数