日付に基づいて連番の列を作成する必要があります。同じ日付の複数の行があり、次のようになります。
nest in.temp out.temp age date
1 501 (913) 18.0 11.5 0 06/02
2 501 (913) 17.5 12.0 0 06/02
3 501 (913) 17.5 12.0 0 06/02
4 501 (913) 17.5 12.5 0 06/02
5 501 (913) 17.5 14.0 1 06/03
6 501 (913) 18.0 13.0 1 06/03
ただし、NA 警告を出力しています。私が使用しているコードは、同じ出力を必要とする複数のファイルを含むフォルダー用であるため、コードがループで機能する場合に役立ちます。ただし、データ フレームを結合するので、後で実行することもできます。
nestlist1 <- lapply(1:length(nestlist), function(z) {
#creates nests in loop
k <- nestlist[[z]]
k <- k[!is.na(k$In), ]
#separates time and date from one another
k$time <- c(format(as.POSIXct(strptime(k$DateTime, "%Y-%m-%d %H:%M:%S", tz="")),
format="%H:%M"))
k$date <- c(format(as.POSIXct(strptime(k$DateTime, "%Y-%m-%d %H:%M", tz="")),
format="%m/%d"))
k$time <- strptime(k$time, "%H:%M")
#sets parameters for temperature being observed
a <- lapply(unique(k$date), function(i)
d <- k[k$date == i & k$time >= "2021-01-14 03:00:00 MDT" &
k$time <= "2021-01-14 06:00:00 MDT", ])
#names based on the date
names(a) <- gsub( ".xlsx", "", unique(k$date))
#number of variables at each date
rn <- lapply(a, nrow)
#????
a <- a[rn > 0]
b <- unlist(lapply(a, function(x) {
x$In
}))
d <- unlist(lapply(a, function(x) {
x$Out
}))
c <- unlist(lapply(a, function(x) {
x$date
}))
e <- unlist(lapply(a, function(x) {
x$date
}))
e <- as.data.frame(e)
c <- as.data.frame(c)
b <- as.data.frame(b)
d <- as.data.frame(d)
b <- cbind(b, d)
b <- cbind(b, c)
b <- cbind(b, e)
colnames(b)[1] <- 'in.temp'
colnames(b)[2] <- 'out.temp'
colnames(b)[3] <- 'day'
colnames(b)[4] <- 'date'
is.num <- sapply(b, is.numeric)
b[is.num] <- lapply(b[is.num], round, 1)
b$day <- as.numeric(b$day)
head(b)
xx <- data.frame(nest=names(nestlist)[z], in.temp= b$in.temp,
out.temp=b$out.temp, age=b$day, date=b$date)
return(xx)
})