1

日付に基づいて連番の列を作成する必要があります。同じ日付の複数の行があり、次のようになります。

       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)
})

4

1 に答える 1