首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用rbind将数据表与POSIXct和Date列类合并?

如何使用rbind将数据表与POSIXct和Date列类合并?
EN

Stack Overflow用户
提问于 2015-03-31 13:02:11
回答 1查看 1K关注 0票数 2

我想合并两个数据表,但其中一个有列ddatePOSIXct类,另一个有列ddateDate类。

我希望结果数据表有POSIXct类,但实际结果取决于传递给rbind的参数序列。

代码语言:javascript
复制
zz1 <- "or,d,ddate,rdate,changes,class,price,fdate,company,number,minutes,added,source
VA1,VA2,2014-05-24,,0,0,2124,2014-05-22 15:50:16,,,,2014-05-22 12:20:03,ss
VA1,VA2,2014-05-26,,0,0,2124,2014-05-22 15:03:44,,,,2014-05-22 12:20:03,s1
VA1,VA2,2014-06-05,,0,0,2124,2014-05-22 15:48:24,,,,2014-05-22 12:20:03,s1
VA1,VA2,2014-06-09,,0,0,2124,2014-05-22 15:37:35,,,,2014-05-22 12:20:03,s2
VA1,VA2,2014-06-16,,0,0,2124,2014-05-22 14:17:33,,,,2014-05-22 12:20:03,ss"

zz2 <- "or,d,ddate,rdate,changes,class,price,fdate,company,number,minutes,added,source
VA3,VA4,2014-05-24 12:23:00,,0,0,2124,2014-05-22 15:50:16,,,,2014-05-22 12:20:03,ss
VA1,VA2,2014-05-26 14:00:01,,0,0,2124,2014-05-22 15:03:44,,,,2014-05-22 12:20:03,s1
VA5,VA6,2014-06-05 18:00:04,,0,0,2124,2014-05-22 15:48:24,,,,2014-05-22 12:20:03,s1
VA7,VA8,2014-06-09 18:00:07,,0,0,2124,2014-05-22 15:37:35,,,,2014-05-22 12:20:03,s2
VA9,VA0,2014-06-16 19:00:20,,0,0,2124,2014-05-22 14:17:33,,,,2014-05-22 12:20:03,ss"

columnClasses <- c("factor", "factor", "Date", "factor", "integer", "factor", "integer", "factor", "factor", "factor", "integer", "factor", "factor")
dt1 <- read.table(text=zz1, header = TRUE, sep = ",", comment.char = "", quote = "", na.strings = c(""), colClasses = columnClasses)

columnClasses <- c("factor", "factor", "POSIXct", "factor", "integer", "factor", "integer", "factor", "factor", "factor", "integer", "factor", "factor")
dt2 <- read.table(text=zz2, header = TRUE, sep = ",", comment.char = "", quote = "", na.strings = c(""), colClasses = columnClasses)

dt <- rbind(dt1, dt2)
class(dt$ddate) # [1] "Date"

dt <- rbind(dt2, dt1)
class(dt$ddate) # [1] "POSIXct" "POSIXt"

我应该怎么做才能永远拥有POSIXct?由于当我从CSV文件获得数据时无法控制序列,如下所示:

代码语言:javascript
复制
tables <- lapply(files, readCSVFile)
dt <- rbindlist(tables, fill = TRUE)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-31 13:10:07

我认为您可以在使用read.csv加载每个文件时处理这些文件,以便将ddate变量转换为POSIXct。这样就可以更好地控制合并。这可以通过创建要由lapply使用的自己的函数来实现。

示例

代码语言:javascript
复制
ddate.convert = function(x){tmp <- readcsv(x); tmp$ddate <- as.POSIXct(tmp$ddate); tmp}
tables <- lapply(files, FUN=ddate.convert)
dt <- rbindlist(tables, fill = TRUE)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29369336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档