我正在处理一个数据集,并对NAs进行了多次推算。下面是一个简化的示例,其中我创建了一个新列,其中包含了NAs的原始数据和推算值(即一天中时间的平均值)。代码运行得很好,但是我在日期方面太弱了,我想知道是否有更简单的方法来计算一天中的平均时间日期/时间值?
arrivals <- data.frame(
ships=c("Glory","Discover","Intrepid","Enchantment","Summit"),
times=c("8:00","10:00","11:42",NA,"9:20"), stringsAsFactors=FALSE)
sumtime <- sapply(strsplit(as.character(arrivals$times),":"),
function(x) as.numeric(x[1])*60 + as.numeric(x[2]))
avgtime <- paste(trunc((mean(sumtime, na.rm=TRUE)/60)),":",
trunc(mean(sumtime, na.rm=TRUE)%%60), sep="")
arrivals$times2 <- arrivals$times
arrivals$times2[is.na(arrivals$times)] <- avgtime发布于 2012-06-13 06:29:50
您可以使用chron包将times列转换为可以取平均值的数字表示:
library(chron)
Arrivals <- arrivals[,c("ships","times")]
# Will give some warnings due to the missing value
Arrivals$times <- chron(times.=paste(Arrivals$times, ":00", sep=""))
Arrivals$times[is.na(Arrivals$times)] <- mean(Arrivals$times,na.rm=TRUE)
ships times
1 Glory 08:00:00
2 Discover 10:00:00
3 Intrepid 11:42:00
4 Enchantment 09:45:30
5 Summit 09:20:00https://stackoverflow.com/questions/11004260
复制相似问题