帮助国威匹配数据
# read data
sb <- read.csv("D:/R/Practise/Time_data/data/sb.csv")
# View(sb)
str(sb)
## 'data.frame': 6 obs. of 16 variables:
## $ Type : int 2 3 2 3 2 3
## $ Obs. : int 1 1 2 2 3 3
## $ Label : int 1 1 1 1 1 1
## $ Etime : num 0 59.5 0 59.5 0 59.5
## $ Date : Factor w/ 3 levels "1/22/2015 10:39",..: 1 1 2 2 3 3
## $ Tcham : num 1.8 1.99 1.9 1.98 1.76 1.87
## $ Pressure: num 81 81.1 81.1 81.1 81.1 ...
## $ H2O : num 5.29 5.5 5.33 5.55 5.27 ...
## $ CO2 : num 429 430 429 430 429 ...
## $ Cdry : num 432 432 431 432 432 ...
## $ RH : num 61.4 63 61.4 63.5 61.4 ...
## $ T4 : num 2.83 2.73 2.79 2.7 2.67 2.67
## $ dCdry.dt: num 0.008 0.006 0.05 0.007 0.009 0.004
## $ Flux : num 0.1056 0.0791 0.6596 0.0923 0.1188 ...
## $ Area : num 37.2 37.2 37.2 37.2 37.2 ...
## $ Vtotal : num 1393 1393 1393 1393 1393 ...
# split sb$Date by space
sbDate <- as.data.frame(strsplit(as.character(sb$Date), "\\s+"))
sbDate <- t(sbDate)
sb$Time <- as.numeric(gsub("[: -]", "" , sbDate[,2] , perl=TRUE))
# yield time sequence by 10 min
library(chron)
## Warning: package 'chron' was built under R version 3.3.3
tt <- times(0:(24 * 6 - 1)/(24 * 6))
# tt rm :
tt <- substr(tt, 1, 5)
end <- gsub("[: -]", "", tt, perl = TRUE)
end <- as.numeric(end)
time_intval <- data.frame(index = 1:144, time = end)
for (i in 1:dim(sb)[1]) {
for (j in 1:dim(time_intval)[1]) {
if (sb$Time[i] > time_intval$time[j] & sb$Time[i] <= time_intval$time[j +
1]) {
sb$time_indx[i] <- time_intval$index[j]
}
}
cat("\n", "---------", "i=", i, "j=", j, "---------")
}
##
## --------- i= 1 j= 144 ---------
## --------- i= 2 j= 144 ---------
## --------- i= 3 j= 144 ---------
## --------- i= 4 j= 144 ---------
## --------- i= 5 j= 144 ---------
## --------- i= 6 j= 144 ---------
TA_2015 <- read.csv("D:/R/Practise/Time_data/data/TA_2015.csv")
str(TA_2015)
## 'data.frame': 52560 obs. of 3 variables:
## $ Date: Factor w/ 365 levels "1/1/2015","1/10/2015",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Time: Factor w/ 288 levels "0:01","0:02",..: 2 4 6 8 10 12 14 16 18 20 ...
## $ TA : num -10.2 -10.2 -10.3 -10.6 -10.6 ...
TA_2015$Time <- as.character(TA_2015$Time)
TA_2015$Time2 <- as.numeric(gsub("[: -]", "", TA_2015$Time, perl = TRUE))
TA_2015$time_indx
## NULL
# add time interval
TA_2015$time_indx <- rep(1:144, 365)
# filename <- 'sb.csv'
match_climate <- function(filename) {
df <- read.csv(filename)
# split df$Date by space
dfDate <- as.data.frame(strsplit(as.character(df$Date), "\\s+"))
dfDate <- t(dfDate)
df$Time <- as.numeric(gsub("[: -]", "", dfDate[, 2], perl = TRUE))
# for loop
for (i in 1:dim(df)[1]) {
for (j in 1:dim(time_intval)[1]) {
if (df$Time[i] > time_intval$time[j] & df$Time[i] <= time_intval$time[j +
1]) {
df$time_indx[i] <- time_intval$index[j]
}
}
cat("\n", "---------", "i=", i, "---------")
}
# match
climate <- merge(TA_2015, df, by.x = "time_indx", by.y = "time_indx", all.x = T)
names(climate)
save_file_name <- paste("climate", filename, sep = "_")
write.csv(climate, file = save_file_name)
}
# run the functions match_climate('sb.csv') save important objectives
# save(TA_2015,time_intval,match_climate,file = 'guowei_match0414.Rdata')