我想基于日期合并两个数据集,并将特定日期定义为不同的类别。第一个data.frame是带有date的水质数据。如下所示(首先是几列数据)。
Organization ID Latitude Longitude Date Year Month Day Depth
1 NJHDG 19 40.6475 -74.17350 2010-06-02 2010 6 2 Surface
2 NJHDG 14 40.7919 -74.07837 2010-06-03 2010 6 3 Near Bottom
3 NJHDG 2 40.9212 -74.17550 2010-06-07 2010 6 7 Midwater
4 NJHDG 5 40.8795 -74.12066 2010-06-09 2010 6 9 Midwater
5 31ISC2RS_WQX HR8A 40.9850 -73.90833 2010-06-10 2010 6 10 Surface
6 NJHDG 6 40.8890 -74.08166 2010-06-14 2010 6 14 Midwater
现在,我有另一个data.frame,它是一个降水数据(样本如下所示)。
Date PrecipitationIn
128 2010-05-08 0.03
129 2010-05-09 0.00
130 2010-05-10 0.00
131 2010-05-11 0.04
132 2010-05-12 0.33
133 2010-05-13 0.00
问题是我想在第一个数据框中定义日期为"湿天"如果当前日期,前一天,前两天通过使用降水数据具有> = 0.2英寸。 例如,对于日期" 2010-06-02"在第一个数据框中。如果是" 2010-5-31"或" 2010-6-01"或" 2010-6-02"有> = 0.2英寸的降水量,我将定义" 2010-06-02" as"湿天"。否则,我将定义"干燥的日子"。我试图用于循环和if函数来定义,但我失败了。有谁有聪明的想法来帮助我解决这个问题?我真的很感激。
答案 0 :(得分:1)
好的 - 如果我能正确回答问题,我不能100%肯定。也许这个例子可以让你了解如何实现你想要的东西。
A <- read.table("path/to/your/dataset1", sep = " ", header = TRUE)
B <- read.table("path/to/your/dataset2", sep = " ", header = TRUE)
C <- merge(A, B, by = "Date")
C <- data.frame(C, day.type = NA)
for (i in 1:nrow(C)){
if (i == 1) {
if (C$PrecipitationIn[i] >= 0.2) {
C$day.type[i] <- "wet day"
} else {
C$day.type[i] <- "dry day"
}
} else if (i == 2) {
if (C$PrecipitationIn[i] >= 0.2 & C$PrecipitationIn[i-1] >= 0.2) {
C$day.type[i] <- "wet day"
} else {
C$day.type[i] <- "dry day"
}
} else if (i > 2) {
if (C$PrecipitationIn[i] >= 0.2 & C$PrecipitationIn[i-1] >= 0.2 & C$PrecipitationIn[i-2] >= 0.2) {
C$day.type[i] <- "wet day"
} else {
C$day.type[i] <- "dry day"
}
}
}