我想完成一个有差距的数据框。数据是按小时结构化的,并且在几个小时之间有一些跳跃。这是数据帧的样本:通过合并完成的数据框填补空白?
sms <- read.csv("hoursms2.csv", sep = ";", header = FALSE)
sms$date <- strptime(sms$date,"%d/%m/%Y %H:%M")
date count
2015-12-17 22:00:00 5
2015-12-18 09:00:00 7
2015-12-18 10:00:00 3
2015-12-18 12:00:00 6
我已经试过是创建另一个数据帧从开始到第一个数据帧的结束范围,但所有的时间和有一个唯一的标识符,以保持它的轨道:
hh <- seq(min(sms$date), max(sms$date), by="hour")
hh <- as.data.frame(hh)
hh <- cbind(hh,seq(1:3292)) #length of the hh data frame
其中给出以下几点:
date id
2015-12-04 12:00:00 1
2015-12-04 13:00:00 2
2015-12-04 14:00:00 3
2015-12-04 15:00:00 4
2015-12-04 16:00:00 5
到目前为止,我已经试过这三样东西我在计算器上,here发现,但他们做的在这种情况下无法正常工作:
res <- merge(sms,hh,by = "date", all = TRUE)
res2 <- res[duplicated(res$date), ]
res3 <- res[!duplicated(res), ]
的第一条命令,资源,什么是是复制的所有单元格,它不会按日期进行合并,所以它提供了以下:
2015-12-23 19:00:00 5
2015-12-23 19:00:00 NA
另一个搞砸了一切。我认为这与日期格式不正确相关,但不确定。任何关于如何填写我的数据框的建议?
其中一种方法是使用'dplyr'包中的'left_join()'。你做'left_join(hh,短信)',这应该会给你你想要的,我想。 – Gopala
@Gopala刚刚尝试过它,并给出了以下错误:加入:“日期” 错误:无法加入列'日期'x'日期':无法加入'日期'x'日期',因为不兼容的类型POSIXct,POSIXt/POSIXlt,POSIXt) – adrian1121