我有以下数据集:
Eq
对于2013年1月1日至2013年1月3日之间的每一天,都在02:00:00时对这两个参数分别进行了观察。我将需要将此数据集扩展到全天24小时,还需要获取每天每个丢失时间的参数和值。我尝试通过创建一个具有2013-01-01至2013-01-03之间所有日期和时间的新data.frame并将其与obs数据框合并的方法进行尝试,但无法弄清楚如何使用每个参数名称和观察值缺少的日期和时间。 结果应如下所示:
Date<-c("2013-01-01 02:00:00","2013-01-02 02:00:00","2013-01-03 02:00:00","2013-01-01 02:00:00","2013-01-02 02:00:00","2013-01-03 02:00:00")
Parameter<-c("Par1","Par1","Par1","Par2","Par2","Par2")
conc<-c(1,4,3,2,6,5)
obs<-data.frame(Date,Parameter,conc)
obs$Date<-as.POSIXct(obs$Date)
obs$Parameter<-as.factor(obs$Parameter)
obs$conc<-as.numeric(obs$conc)
答案 0 :(得分:1)
作为替代答案:
new.Date <- matrix(sapply(obs$Date,function(t) t + as.difftime(-2:21,units = "hours")),ncol=1)
new.Par <- matrix(sapply(obs$Parameter,function(x)rep(x,24)),ncol=1)
new.conc <- matrix(sapply(obs$conc,function(x)rep(x,24)),ncol=1)
newData <- data.frame(
Date = as.POSIXct(new.Date, origin = "1970-01-01"),
Parameter = new.Par,
new.conc = new.conc
)
答案 1 :(得分:0)
我不确定这是否正是您要提出的内容,因为您尝试获得的结果中包含了一些技巧,或者对我来说没有意义,但是请看一下:
expDate <- function(startTime,t_par,t_conc){
if(is.character(startTime)){
startTime <- as.POSIXct(startTime,origin= "1970-01-01")
}
nExp <- 24
timeExpand <- as.difftime(0:nExp,units="hours")
returnDF <- data.frame(
Date = startTime + timeExpand,
Parameter = rep(t_par,nExp+1),
conc = rep(t_conc,nExp+1)
)
return(returnDF)
}
tempData <- apply(obs,1,function(x) expDate(x[1],x[2],x[3]))
newData <- data.frame()
for(i in 1:length(tempData)){
newData <- rbind(newData,tempData[[i]])
}