元データ「_ori.csv」から「無印.csv」を作った過程
# 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(ggplot2)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko1999_ori <- Yoko1999
## RainCount, XXXX/4/16 0:00 - 5/10 23:50を見晴し土場と置換
# 置換する期間のフィルタリング
start_date = as.POSIXct("1999-04-16 00:00")
end_date = as.POSIXct("1999-05-10 23:50")
# MihaXXXXの該当期間のデータを抽出
Subset = Miha1999 %>%
filter(DateTime >= start_date & DateTime <= end_date)
# YokoXXXXの該当期間のデータを置換
Yoko1999 = Yoko1999 %>%
mutate(RainCount = ifelse(DateTime >= start_date & DateTime <= end_date, Subset$RainCount, RainCount))
# 結果の確認
sum(Yoko1999$RainCount)
## AirTemp、苗畑と相関を確認
# 両データフレームをDateTimeで結合
merged_data <- inner_join(Yoko1999, Nae1999, by = "DateTime", suffix = c("_Yoko", "_Nae"))
# NAを含む行を削除
merged_data <- na.omit(merged_data)
# 回帰分析を実行
model <- lm(AirTemp_Yoko ~ AirTemp_Nae, data = merged_data)
# 回帰モデルの確認
summary(model)
# 散布図のプロット
ggplot(merged_data, aes(x = AirTemp_Yoko, y = AirTemp_Nae)) +
geom_point() +
labs(x = "Nae1999", y = "Yoko1999")+
theme_minimal()
# 置換する日付範囲のリスト
date_ranges <- list(
c("1999-07-08 00:00", "1999-07-08 23:50"),
c("1999-07-10 00:00", "1999-07-10 23:50"),
c("1999-07-16 00:00", "1999-07-17 23:50"),
c("1999-07-20 00:00", "1999-07-22 23:50"),
c("1999-07-24 00:00", "1999-07-24 23:50"),
c("1999-07-26 00:00", "1999-07-26 23:50"),
c("1999-07-30 00:00", "1999-07-30 23:50"),
c("1999-08-29 00:00", "1999-08-29 23:50"),
c("1999-09-27 00:00", "1999-09-27 23:50"),
c("1999-09-30 00:00", "1999-09-30 23:50")
)
# 各日付範囲でデータを置換
for (range in date_ranges) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
# NaeXXXXの該当期間のデータを抽出
Subset <- merged_data %>%
filter(DateTime >= start_date & DateTime <= end_date)
# 回帰モデルを適用して予測値を計算
Predicted <- predict(model, newdata = Subset)
# YokoXXXXの該当期間のデータを置換
Yoko1999 <- Yoko1999 %>%
mutate(AirTemp = ifelse(DateTime >= start_date & DateTime <= end_date, Predicted, AirTemp))
}
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko1999$DateTime <- format(Yoko1999$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko1999, file = "C:/Users/.../Desktop/Yoko1999.csv", row.names = FALSE)
Yoko1999$DateTime = as.POSIXct(Yoko1999$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2001_ori <- Yoko2001
## RainCount, 2001/4/1 0:00 - 7/31 23:50を見晴し土場と置換
# 置換する期間のフィルタリング
start_date = as.POSIXct("2001-04-01 00:00")
end_date = as.POSIXct("2001-07-31 23:50")
# Miha_の該当期間のデータを抽出
Subset = Miha2001 %>%
filter(DateTime >= start_date & DateTime <= end_date)
# Yoko_の該当期間のデータを置換
Yoko2001 = Yoko2001 %>%
mutate(RainCount = ifelse(DateTime >= start_date & DateTime <= end_date, Subset$RainCount, RainCount))
# 結果の確認
sum(Yoko2001$RainCount, na.rm = TRUE)*0.5
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2001$DateTime <- format(Yoko2001$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2001, file = "C:/Users/.../Desktop/Yoko2001.csv", row.names = FALSE)
Yoko2001$DateTime = as.POSIXct(Yoko2001$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2006_ori <- Yoko2006
## RainCount, 2006/8/21 0:00 - 8/23 23:50を見晴し土場と置換
# 置換する期間のフィルタリング
start_date = as.POSIXct("2006-08-21 00:00")
end_date = as.POSIXct("2006-08-23 23:50")
# MihaXXXXの該当期間のデータを抽出
Subset = Miha2006 %>%
filter(DateTime >= start_date & DateTime <= end_date)
# Yoko2006の該当期間のデータを置換
Yoko2006 = Yoko2006 %>%
mutate(RainCount = ifelse(DateTime >= start_date & DateTime <= end_date, Subset$RainCount, RainCount))
# 結果の確認
sum(Yoko2006$RainCount, na.rm = TRUE)*0.5
## AirTemp、2006/8/21 0:00 - 8/23 23:50を見晴し土場と置換
# YokoXXXXの該当期間のデータを置換
Yoko2006 = Yoko2006 %>%
mutate(AirTemp = ifelse(DateTime >= start_date & DateTime <= end_date, Subset$AirTemp, AirTemp))
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2006$DateTime <- format(Yoko2006$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2006, file = "C:/Users/.../Desktop/Yoko2006.csv", row.names = FALSE)
Yoko2006$DateTime = as.POSIXct(Yoko2006$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2007_ori <- Yoko2007
# 最初からやり直す
Yoko2007 = read.csv("C:/Users/.../desktop/Yoko2007.csv", stringsAsFactors = FALSE)
Yoko2007$DateTime = as.POSIXct(Yoko2007$DateTime, format='%Y/%m/%d %H:%M')
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2007-04-09 00:00", "2007-05-01 23:50"),
c("2007-05-30 00:00", "2007-06-19 23:50"),
c("2007-09-12 00:00", "2007-09-20 23:50"),
c("2007-10-31 00:00", "2007-11-05 23:50")
)
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2007 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2007 <- Yoko2007 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2007$RainCount, na.rm = TRUE)*0.5
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2007$DateTime <- format(Yoko2007$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2007, file = "C:/Users/.../Desktop/Yoko2007.csv", row.names = FALSE)
Yoko2007$DateTime = as.POSIXct(Yoko2007$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2008_ori <- Yoko2008
# 最初からやり直す
Yoko2008 = read.csv("C:/Users/.../desktop/Yoko2008.csv", stringsAsFactors = FALSE)
Yoko2008$DateTime = as.POSIXct(Yoko2008$DateTime, format='%Y/%m/%d %H:%M')
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2008-05-01 00:00", "2008-05-23 23:50"),
c("2008-06-21 00:00", "2008-07-01 23:50"),
c("2008-09-20 00:00", "2008-10-08 23:50")
)
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2008 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2008 <- Yoko2008 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2008$RainCount, na.rm = TRUE)*0.5
mean(Yoko2008$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2008$DateTime <- format(Yoko2008$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2008, file = "C:/Users/.../Desktop/Yoko2008.csv", row.names = FALSE)
Yoko2008$DateTime = as.POSIXct(Yoko2008$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2009_ori <- Yoko2009
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2009-08-09 00:00", "2009-08-18 23:50"))
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2009 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2009 <- Yoko2009 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2009$RainCount, na.rm = TRUE)*0.5
mean(Yoko2009$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2009$DateTime <- format(Yoko2009$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2009, file = "C:/Users/.../Desktop/Yoko2009.csv", row.names = FALSE)
Yoko2009$DateTime = as.POSIXct(Yoko2009$DateTime, format='%Y/%m/%d %H:%M') # 元データの見直し
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Yoko2011 = read.csv("C:/Users/.../Desktop/Yoko2011.csv", stringsAsFactors = FALSE)
Yoko2011$DateTime = as.POSIXct(Yoko2011$DateTime, format='%Y/%m/%d %H:%M')
# 結果の確認
sum(Yoko2011$RainCount, na.rm = TRUE)*0.5
mean(Yoko2011$AirTemp, na.rm = TRUE) # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Yoko2014 = read.csv("C:/Users/.../desktop/Yoko2014.csv", stringsAsFactors = FALSE)
Yoko2014$DateTime = as.POSIXct(Yoko2014$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2014_ori <- Yoko2014
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2014-04-10 00:00", "2014-04-28 23:50"),
c("2014-09-22 00:00", "2014-09-30 23:50"),
c("2014-10-03 00:00", "2014-10-03 23:50"),
c("2014-10-06 00:00", "2014-10-11 23:50"),
c("2014-11-11 00:00", "2014-11-30 23:50")
)
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2014 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2014 <- Yoko2014 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2014$RainCount, na.rm = TRUE)*0.5
mean(Yoko2014$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2014$DateTime <- format(Yoko2014$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2014, file = "C:/Users/.../Desktop/Yoko2014.csv", row.names = FALSE)
Yoko2014$DateTime = as.POSIXct(Yoko2014$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Yoko2015 = read.csv("C:/Users/.../desktop/Yoko2015.csv", stringsAsFactors = FALSE)
Yoko2015$DateTime = as.POSIXct(Yoko2015$DateTime, format='%Y/%m/%d %H:%M')
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-01-04 00:00", "2015-01-04 23:50"),
c("2015-01-31 00:00", "2015-02-03 23:50"),
c("2015-02-23 00:00", "2015-02-23 23:50")
)
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2015 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2015 <- Yoko2015 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2015$RainCount, na.rm = TRUE)*0.5
mean(Yoko2015$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2015$DateTime <- format(Yoko2015$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2015, file = "C:/Users/.../Desktop/Yoko2015.csv", row.names = FALSE)
Yoko2015$DateTime = as.POSIXct(Yoko2015$DateTime, format='%Y/%m/%d %H:%M') # 元データの見直し
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す(のみ、_oriの生成なし)
Yoko2016 = read.csv("C:/Users/.../desktop/Yoko2016.csv", stringsAsFactors = FALSE)
Yoko2016$DateTime = as.POSIXct(Yoko2016$DateTime, format='%Y/%m/%d %H:%M')
# 結果の確認
sum(Yoko2016$RainCount, na.rm = TRUE)*0.5
mean(Yoko2016$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
write.csv(Yoko2016, file = "C:/Users/.../Desktop/Yoko2016.csv", row.names = FALSE) # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2021_ori <- Yoko2021
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2021-03-04 00:00", "2021-03-05 23:50")
)
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2021 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2021 <- Yoko2021 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2021$RainCount, na.rm = TRUE)*0.5
mean(Yoko2021$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2021$DateTime <- format(Yoko2021$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2021, file = "C:/Users/.../Desktop/Yoko2021.csv", row.names = FALSE)
Yoko2021$DateTime = as.POSIXct(Yoko2021$DateTime, format='%Y/%m/%d %H:%M') # 機器不良のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをYokoXXXX_oriに待避
Yoko2022_ori <- Yoko2022
## RainCount, AirTemp, 以下の複数期間を見晴し土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2022-05-26 00:00", "2022-06-26 23:50"),
c("2022-10-26 00:00", "2022-11-24 23:50")
)
# 各日付範囲でデータを置換
# MihaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Miha2022 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# YokoXXXXの該当期間のデータを置換
Yoko2022 <- Yoko2022 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Yoko2022$RainCount, na.rm = TRUE)*0.5
mean(Yoko2022$AirTemp, na.rm = TRUE)
# YokoXXXXをデスクトップにcsvファイルとして保存
Yoko2022$DateTime <- format(Yoko2022$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Yoko2022, file = "C:/Users/.../Desktop/Yoko2022.csv", row.names = FALSE)
Yoko2022$DateTime = as.POSIXct(Yoko2022$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha1998_ori <- Miha1998
## RainCountを横川土場と置換
# 置換する期間のフィルタリング
start_date = as.POSIXct("1998-06-23 00:00")
end_date = as.POSIXct("1998-06-30 23:50")
# Yoko_の該当期間のデータを抽出
Subset = Yoko1998 %>%
filter(DateTime >= start_date & DateTime <= end_date)
# Miha_の該当期間のデータを置換
Miha1998 = Miha1998 %>%
mutate(RainCount = ifelse(DateTime >= start_date & DateTime <= end_date, Subset$RainCount, RainCount))
# 結果の確認
sum(Miha1998$RainCount, na.rm = TRUE)*0.5
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha1998$DateTime <- format(Miha1998$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha1998, file = "C:/Users/.../Desktop/Miha1998.csv", row.names = FALSE)
Miha1998$DateTime = as.POSIXct(Miha1998$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
library(ggplot2)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2000_ori <- Miha2000
## RainCountを横川土場と置換
# 置換する期間のフィルタリング
start_date = as.POSIXct("2000-07-04 00:00")
end_date = as.POSIXct("2000-07-17 23:50")
# YokoXXXXの該当期間のデータを抽出
Subset = Yoko2000 %>%
filter(DateTime >= start_date & DateTime <= end_date)
# MihaXXXXの該当期間のデータを置換
Miha2000 = Miha2000 %>%
mutate(RainCount = ifelse(DateTime >= start_date & DateTime <= end_date, Subset$RainCount, RainCount))
# 結果の確認
sum(Miha2000$RainCount, na.rm = TRUE)*0.5
## AirTemp、横川と相関を確認
# 両データフレームをDateTimeで結合
merged_data <- inner_join(Miha2000, Yoko2000, by = "DateTime", suffix = c("_Miha", "_Yoko"))
# NAを含む行を削除
merged_data <- na.omit(merged_data)
# 回帰分析を実行
model <- lm(AirTemp_Miha ~ AirTemp_Yoko, data = merged_data)
# 回帰モデルの確認
summary(model)
# 散布図のプロット
ggplot(merged_data, aes(x = AirTemp_Yoko, y = AirTemp_Miha)) +
geom_point() +
labs(x = "Yoko2000", y = "Miha2000")+
theme_minimal()
# 置換する日付範囲のリスト
date_ranges <- list(
c("2000-07-04 00:00", "2000-07-17 23:50")
)
# 各日付範囲でデータを置換
for (range in date_ranges) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
# YokoXXXXの該当期間のデータを抽出
Subset <- merged_data %>%
filter(DateTime >= start_date & DateTime <= end_date)
# 回帰モデルを適用して予測値を計算
Predicted <- predict(model, newdata = Subset)
# MihaXXXXの該当期間のデータを置換
Miha2000 <- Miha2000 %>%
mutate(AirTemp = ifelse(DateTime >= start_date & DateTime <= end_date, Predicted, AirTemp))
}
# 結果の確認
sum(Miha2000$RainCount, na.rm = TRUE)*0.5
mean(Miha2000$AirTemp, na.rm = TRUE)
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2000$DateTime <- format(Miha2000$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2000, file = "C:/Users/.../Desktop/Miha2000.csv", row.names = FALSE)
Miha2000$DateTime = as.POSIXct(Miha2000$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2003_ori <- Miha2003
# 置換する日付範囲のリスト
date_ranges <- list(
c("2003-06-21 00:00", "2003-07-31 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2003 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2003 <- Miha2003 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2003$RainCount, na.rm = TRUE)*0.5
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2003$DateTime <- format(Miha2003$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2003, file = "C:/Users/.../Desktop/Miha2003.csv", row.names = FALSE)
Miha2003$DateTime = as.POSIXct(Miha2003$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2006_ori <- Miha2006
# 置換する日付範囲のリスト
date_ranges <- list(
c("2006-09-15 00:00", "2006-11-30 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2006 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2006 <- Miha2006 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2006$RainCount, na.rm = TRUE)*0.5
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2006$DateTime <- format(Miha2006$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2006, file = "C:/Users/.../Desktop/Miha2006.csv", row.names = FALSE)
Miha2006$DateTime = as.POSIXct(Miha2006$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Miha2007 = read.csv("C:/Users/.../desktop/Miha2007.csv", stringsAsFactors = FALSE)
Miha2007$DateTime = as.POSIXct(Miha2007$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2007_ori <- Miha2007
## RainCount, AirTemp, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2007-03-12 00:00", "2007-03-14 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2007 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2007 <- Miha2007 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2007$RainCount, na.rm = TRUE)*0.5
mean(Miha2007$AirTemp, na.rm = TRUE)
Miha2007 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2007$DateTime <- format(Miha2007$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2007, file = "C:/Users/.../Desktop/Miha2007.csv", row.names = FALSE)
Miha2007$DateTime = as.POSIXct(Miha2007$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2008_ori <- Miha2008
## RainCount, AirTemp, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2008-07-07 00:00", "2008-07-09 23:50"),
c("2008-10-19 00:00", "2008-10-20 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2008 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2008 <- Miha2008 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2008$RainCount, na.rm = TRUE)*0.5
mean(Miha2008$AirTemp, na.rm = TRUE)
Miha2008 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2008 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2008$DateTime <- format(Miha2008$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2008, file = "C:/Users/.../Desktop/Miha2008.csv", row.names = FALSE)
Miha2008$DateTime = as.POSIXct(Miha2008$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Miha2011 = read.csv("C:/Users/.../desktop/Miha2011.csv", stringsAsFactors = FALSE)
Miha2011$DateTime = as.POSIXct(Miha2011$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2011_ori <- Miha2011
## RainCount, AirTemp, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2011-05-13 00:00", "2011-06-03 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2011 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2011 <- Miha2011 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2011$RainCount, na.rm = TRUE)*0.5
mean(Miha2011$AirTemp, na.rm = TRUE)
Miha2011 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2011 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2011 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2011 %>% filter(month(DateTime) == 5) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
Miha2011 %>% filter(month(DateTime) == 6) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
Miha2011 %>% filter(month(DateTime) == 8) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2011$DateTime <- format(Miha2011$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2011, file = "C:/Users/.../Desktop/Miha2011.csv", row.names = FALSE)
Miha2011$DateTime = as.POSIXct(Miha2011$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2012_ori <- Miha2012
## RainCount, AirTemp, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2012-01-24 00:00", "2012-01-30 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2012 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2012 <- Miha2012 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2012$RainCount, na.rm = TRUE)*0.5
mean(Miha2012$AirTemp, na.rm = TRUE)
Miha2012 %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2012 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2012$DateTime <- format(Miha2012$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2012, file = "C:/Users/.../Desktop/Miha2012.csv", row.names = FALSE)
Miha2012$DateTime = as.POSIXct(Miha2012$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Miha2014 = read.csv("C:/Users/.../desktop/Miha2014.csv", stringsAsFactors = FALSE)
Miha2014$DateTime = as.POSIXct(Miha2014$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2014_ori <- Miha2014
## RainCount, AirTemp, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2014-03-05 00:00", "2014-04-09 23:50"),
c("2014-08-28 00:00", "2014-09-06 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2014 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2014 <- Miha2014 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2014$RainCount, na.rm = TRUE)*0.5
mean(Miha2014$AirTemp, na.rm = TRUE)
Miha2014 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2014 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2014 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2014 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2014 %>% filter(month(DateTime) == 3) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
Miha2014 %>% filter(month(DateTime) == 4) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
Miha2014 %>% filter(month(DateTime) == 8) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
Miha2014 %>% filter(month(DateTime) == 9) %>% summarize(Ave_airtemp = mean(AirTemp, na.rm = TRUE))
df = Miha2014 %>% filter(month(DateTime) == 3) %>% group_by(date=date(DateTime)) %>% reframe(Rain=sum(RainCount, na.rm=FALSE)*0.5)
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2014$DateTime <- format(Miha2014$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2014, file = "C:/Users/.../Desktop/Miha2014.csv", row.names = FALSE)
Miha2014$DateTime = as.POSIXct(Miha2014$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2016_ori <- Miha2016
## RainCount, AirTemp, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2016-07-25 00:00", "2016-08-24 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2016 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2016 <- Miha2016 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount),
AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new, AirTemp)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2016$RainCount, na.rm = TRUE)*0.5
mean(Miha2016$AirTemp, na.rm = TRUE)
Miha2016 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2016 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2016$DateTime <- format(Miha2016$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2016, file = "C:/Users/.../Desktop/Miha2016.csv", row.names = FALSE)
Miha2016$DateTime = as.POSIXct(Miha2016$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをMihaXXXX_oriに待避
Miha2017_ori <- Miha2017
## RainCount, 以下の期間を横川土場と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2017-07-13 00:00", "2017-08-29 23:50")
)
# 各日付範囲でデータを置換
# YokoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Yoko2017 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# MihaXXXXの該当期間のデータを置換
Miha2017 <- Miha2017 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Miha2017$RainCount, na.rm = TRUE)*0.5
mean(Miha2017$AirTemp, na.rm = TRUE)
Miha2017 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Miha2017 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# MihaXXXXをデスクトップにcsvファイルとして保存
Miha2017$DateTime <- format(Miha2017$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Miha2017, file = "C:/Users/.../Desktop/Miha2017.csv", row.names = FALSE)
Miha2017$DateTime = as.POSIXct(Miha2017$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae1999_ori <- Nae1999
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1999-06-25 00:00", "1999-09-30 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya1999 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae1999 <- Nae1999 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Nae1999$RainCount, na.rm = TRUE)*0.5
Nae1999 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae1999 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae1999 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae1999 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae1999$DateTime <- format(Nae1999$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae1999, file = "C:/Users/.../Desktop/Nae1999.csv", row.names = FALSE)
Nae1999$DateTime = as.POSIXct(Nae1999$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2000_ori <- Nae2000
## 6~10月の降水量がおかしい、別途記録計から引用する。補間元は日雨量しかない。
# 該当期間の日降水量(153日分)
DailyPrecip = c(0.0, 0.0, 0.0, 0.0, 5.5, 17.0, 38.0, 1.5, 1.5, 10.5, 0.0, 0.0, 5.0, 24.5, 26.5, 2.0, 0.0, 0.0, 12.5, 0.0, 3.5, 0.5, 1.0, 2.5, 1.5, 0.0, 2.5, 9.0, 80.5, 13.5, 0.0, 0.0, 0.0, 10.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.0, 0.0, 0.0, 10.0, 64.0, 34.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 5.5, 1.0, 1.0, 0.5, 3.5, 9.0, 1.0, 0.0, 20.0, 7.0, 3.5, 0.0, 0.5, 0.0, 0.5, 0.5, 0.0, 0.5, 0.0, 42.5, 156.5, 17.0, 0.0, 0.0, 10.5, 16.0, 13.0, 9.5, 89.5, 2.5, 0.0, 1.5, 6.0, 8.5, 0.0, 0.0, 8.5, 6.5, 24.5, 145.5, 87.5, 0.0, 0.5, 6.0, 3.0, 0.5, 0.5, 0.0, 0.0, 0.5, 7.5, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 4.5, 0.0, 19.0, 18.5, 0.0, 0.0, 0.5, 16.0, 0.0, 0.5, 2.5, 0.5, 71.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 12.5, 4.0, 0.0, 0.0, 0.0, 25.5, 7.0, 0.0, 0.0, 0.0, 0.0, 24.0, 0.5, 0.0, 0.0)
# RainCountにするために、2倍する
DailyRainCount = DailyPrecip * 2
# 10分間隔のデータフレームを作成するための空のベクトル
TenMinRainCount <- rep(0, 153 * 24 * 6) # 153日 * 24時間 * 6(10分間隔)
# 1日ごとの降水量を10分間隔のデータフレームに均等に割り振る
for (i in 1:length(DailyRainCount)) {
TenMinRainCount[((i - 1) * 24 * 6 + 1):(i * 24 * 6)] <- DailyRainCount[i] / (24 * 6)
}
# データフレームを作成、スタートは6/1
RainCount_df <- data.frame(
time = seq.POSIXt(from = as.POSIXct("2000-06-01 00:00"), by = "10 min", length.out = length(TenMinRainCount)),
RainCount = TenMinRainCount
)
# Nae2000とRainCount_dfを結合し、RainCount列を置換する
Nae2000 <- Nae2000 %>%
left_join(RainCount_df, by = c("DateTime" = "time"), suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Nae2000$RainCount, na.rm = TRUE)*0.5
Nae2000 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2000 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2000 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2000 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2000 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
## AirTemp, 以下の期間を大谷山と置換、2.2℃プラスする
# 置換する日付範囲のリスト
date_ranges <- list(
c("2000-07-04 00:00", "2000-09-05 23:50")
)
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2000 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2000 <- Nae2000 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2000$AirTemp, na.rm = TRUE)
Nae2000 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2000 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2000 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2000$DateTime <- format(Nae2000$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2000, file = "C:/Users/.../Desktop/Nae2000.csv", row.names = FALSE)
Nae2000$DateTime = as.POSIXct(Nae2000$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量、気温を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2001_ori <- Nae2001
## 3~11月は転倒不良、別途記録計から引用するのがPDFバージョンの補正方法だが、前年の降水量と全く同じ値で奇妙なので、大谷山を引用することにする
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2001-03-01 00:00", "2001-11-30 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2001 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2001 <- Nae2001 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Nae2001$RainCount, na.rm = TRUE)*0.5
Nae2001 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2001 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
## AirTemp, 以下の期間を大谷山と置換、2.2℃プラスする
# 置換する日付範囲のリスト
date_ranges <- list(
c("2001-07-19 00:00", "2001-09-11 23:50")
)
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2001 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2001 <- Nae2001 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2001$AirTemp, na.rm = TRUE)
Nae2001 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2001 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2001 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2001$DateTime <- format(Nae2001$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2001, file = "C:/Users/.../Desktop/Nae2001.csv", row.names = FALSE)
Nae2001$DateTime = as.POSIXct(Nae2001$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量、気温を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Nae2003 = read.csv("C:/Users/.../desktop/Nae2003.csv", stringsAsFactors = FALSE)
Nae2003$DateTime = as.POSIXct(Nae2003$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2003_ori <- Nae2003
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2003-04-01 00:00", "2003-08-20 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2003 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2003 <- Nae2003 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Nae2003$RainCount, na.rm = TRUE)*0.5
Nae2003 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2003 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2003 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2003 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2003 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
## AirTemp, 以下の期間を大谷山と置換、2.2℃プラスする
# 置換する日付範囲のリスト
date_ranges <- list(
c("2003-03-11 00:00", "2003-03-23 23:50"),
c("2003-03-30 00:00", "2003-03-30 23:50"),
c("2003-04-10 00:00", "2003-04-11 23:50"),
c("2003-05-02 00:00", "2003-05-07 23:50"),
c("2003-05-21 00:00", "2003-05-24 23:50"),
c("2003-05-28 00:00", "2003-06-05 23:50"),
c("2003-06-17 00:00", "2003-07-21 23:50"),
c("2003-08-05 00:00", "2003-08-10 23:50")
)
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2003 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2003 <- Nae2003 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2003$AirTemp, na.rm = TRUE)
Nae2003 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2003 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2003 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2003 %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2003 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2003 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2003$DateTime <- format(Nae2003$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2003, file = "C:/Users/.../Desktop/Nae2003.csv", row.names = FALSE)
Nae2003$DateTime = as.POSIXct(Nae2003$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2004_ori <- Nae2004
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2004-09-15 00:00", "2004-12-31 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2004 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2004 <- Nae2004 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)
) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Nae2004$RainCount, na.rm = TRUE)*0.5
Nae2004 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2004 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2004 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2004 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2004$DateTime <- format(Nae2004$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2004, file = "C:/Users/.../Desktop/Nae2004.csv", row.names = FALSE)
Nae2004$DateTime = as.POSIXct(Nae2004$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2005_ori <- Nae2005
## AirTemp, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2005-12-30 00:00", "2005-12-31 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2005 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2005 <- Nae2005 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2005$AirTemp, na.rm = TRUE)
Nae2005 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2005$DateTime <- format(Nae2005$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2005, file = "C:/Users/.../Desktop/Nae2005.csv", row.names = FALSE)
Nae2005$DateTime = as.POSIXct(Nae2005$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量、気温を他観測所から引用
library(dplyr)
library(lubridate)
library(tidyr)
# 最初からやり直す
Nae2006 = read.csv("C:/Users/.../desktop/Nae2006.csv", stringsAsFactors = FALSE)
Nae2006$DateTime = as.POSIXct(Nae2006$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2006_ori <- Nae2006
## AirTemp, 以下の期間を大谷山と置換、2.2℃プラスする
# 置換する日付範囲のリスト
date_ranges <- list(
c("2006-01-01 00:00", "2006-01-01 23:50"),
c("2006-01-05 00:00", "2006-01-06 23:50"),
c("2006-01-13 00:00", "2006-01-15 23:50"),
c("2006-03-21 00:00", "2006-03-22 23:50"),
c("2006-03-27 00:00", "2006-03-28 23:50")
)
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2006 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2006 <- Nae2006 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2006$AirTemp, na.rm = TRUE)
Nae2006 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2006 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2006 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2006$DateTime <- format(Nae2006$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2006, file = "C:/Users/.../Desktop/Nae2006.csv", row.names = FALSE)
Nae2006$DateTime = as.POSIXct(Nae2006$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2009_ori <- Nae2009
## AirTemp, RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2009-06-23 00:00", "2009-06-30 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2009 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2009 <- Nae2009 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2009$AirTemp, na.rm = TRUE)
Nae2009 %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Nae2009$RainCount, na.rm = TRUE)*0.5
Nae2009 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2009$DateTime <- format(Nae2009$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2009, file = "C:/Users/.../Desktop/Nae2009.csv", row.names = FALSE)
Nae2009$DateTime = as.POSIXct(Nae2009$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量、気温を他観測所から引用
library(dplyr)
library(lubridate)
# 最初からやり直す
Nae2014 = read.csv("C:/Users/.../desktop/Nae2014.csv", stringsAsFactors = FALSE)
Nae2014$DateTime = as.POSIXct(Nae2014$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2014_ori <- Nae2014
## AirTemp, 以下の期間を大谷山と置換、2.2℃プラスする
# 置換する日付範囲のリスト
date_ranges <- list(
c("2014-03-28 00:00", "2014-05-01 23:50"),
c("2014-09-28 00:00", "2014-09-30 23:50"),
c("2014-10-03 00:00", "2014-10-03 23:50"),
c("2014-10-07 00:00", "2014-10-08 23:50"),
c("2014-10-10 00:00", "2014-10-11 23:50"),
c("2014-10-14 00:00", "2014-10-14 23:50"),
c("2014-10-16 00:00", "2014-12-01 23:50"),
c("2014-12-29 00:00", "2014-12-31 23:50")
)
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2014 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2014 <- Nae2014 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount, 以下の期間を大谷山と置換する
# 置換する日付範囲のリスト
date_ranges <- list(
c("2014-03-28 00:00", "2014-05-01 23:50"),
c("2014-12-29 00:00", "2014-12-31 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2014 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2014 <- Nae2014 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2014$AirTemp, na.rm = TRUE)
Nae2014 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2014 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2014 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2014 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2014 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2014 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2014 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Nae2014$RainCount, na.rm = TRUE)*0.5
Nae2014 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2014 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2014 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2014 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2014$DateTime <- format(Nae2014$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2014, file = "C:/Users/.../Desktop/Nae2014.csv", row.names = FALSE)
Nae2014$DateTime = as.POSIXct(Nae2014$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# 最初からやり直す
Nae2015 = read.csv("C:/Users/.../desktop/Nae2015.csv", stringsAsFactors = FALSE)
Nae2015$DateTime = as.POSIXct(Nae2015$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2015_ori <- Nae2015
## AirTemp, RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-01-01 00:00", "2015-01-05 23:50"),
c("2015-02-23 00:00", "2015-02-23 23:50"),
c("2015-02-26 00:00", "2015-03-02 23:50")
)
# 各日付範囲でデータを置換
# OyaXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2015 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2015 <- Nae2015 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new + 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Nae2015$AirTemp, na.rm = TRUE)
Nae2015 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2015 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2015 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Nae2015 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Nae2015$RainCount, na.rm = TRUE)*0.5
Nae2015 %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2015 %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2015 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2015 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2015$DateTime <- format(Nae2015$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2015, file = "C:/Users/.../Desktop/Nae2015.csv", row.names = FALSE)
Nae2015$DateTime = as.POSIXct(Nae2015$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、降水量を他観測所から引用、8/27~9/26は全部の気象観測所のデータが欠測なので、欠測
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをNaeXXXX_oriに待避
Nae2016_ori <- Nae2016
## RainCount, 以下の期間を大谷山と置換する
# 置換する日付範囲のリスト
date_ranges <- list(
c("2016-07-01 00:00", "2016-08-26 23:50")
)
# 各日付範囲でデータを置換
# Oya20XXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Oya2016 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# NaeXXXXの該当期間のデータを置換
Nae2016 <- Nae2016 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Nae2016$RainCount, na.rm = TRUE)*0.5
Nae2016 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2016 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Nae2016 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# NaeXXXXをデスクトップにcsvファイルとして保存
Nae2016$DateTime <- format(Nae2016$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Nae2016, file = "C:/Users/.../Desktop/Nae2016.csv", row.names = FALSE)
Nae2016$DateTime = as.POSIXct(Nae2016$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya1997_ori <- Oya1997
## AirTemp, 以下の期間を大谷山-2.2して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1997-09-08 00:00", "1997-10-01 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae1997 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya1997 <- Oya1997 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1997-06-01 00:00", "1997-10-01 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae1997 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya1997 <- Oya1997 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya1997$AirTemp, na.rm = TRUE)
Oya1997 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya1997 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya1997$RainCount, na.rm = TRUE)*0.5
Oya1997 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1997 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1997 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1997 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1997 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya1997$DateTime <- format(Oya1997$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya1997, file = "C:/Users/.../Desktop/Oya1997.csv", row.names = FALSE)
Oya1997$DateTime = as.POSIXct(Oya1997$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya1998_ori <- Oya1998
## AirTemp, 以下の期間を大谷山-2.2して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1998-07-03 00:00", "1998-12-11 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae1998 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya1998 <- Oya1998 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1998-06-01 00:00", "1998-12-11 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae1998 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya1998 <- Oya1998 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya1998$AirTemp, na.rm = TRUE)
Oya1998 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya1998 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya1998 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya1998 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya1998 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya1998 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya1998$RainCount, na.rm = TRUE)*0.5
Oya1998 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1998 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1998 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1998 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1998 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1998 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya1998 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya1998$DateTime <- format(Oya1998$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya1998, file = "C:/Users/.../Desktop/Oya1998.csv", row.names = FALSE)
Oya1998$DateTime = as.POSIXct(Oya1998$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2000_ori <- Oya2000
## AirTemp, 以下の期間を大谷山-2.2して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2000-11-22 00:00", "2000-11-23 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2000 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2000 <- Oya2000 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2000-09-01 00:00", "2000-11-23 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2000 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2000 <- Oya2000 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2000$AirTemp, na.rm = TRUE)
Oya2000 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2000$RainCount, na.rm = TRUE)*0.5
Oya2000 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2000 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2000 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2000$DateTime <- format(Oya2000$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2000, file = "C:/Users/.../Desktop/Oya2000.csv", row.names = FALSE)
Oya2000$DateTime = as.POSIXct(Oya2000$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2003_ori <- Oya2003
## AirTemp, 以下の期間を大谷山-2.2して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2003-09-20 00:00", "2003-11-18 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2003 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2003 <- Oya2003 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2003$AirTemp, na.rm = TRUE)
Oya2003 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2003 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2003 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2003$DateTime <- format(Oya2003$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2003, file = "C:/Users/.../Desktop/Oya2003.csv", row.names = FALSE)
Oya2003$DateTime = as.POSIXct(Oya2003$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2006_ori <- Oya2006
## AirTemp, RainCount, 以下の期間を苗畑と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2006-07-13 00:00", "2006-07-15 23:50"),
c("2006-11-01 00:00", "2006-11-02 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2006 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2006 <- Oya2006 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2006$AirTemp, na.rm = TRUE)
Oya2006 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2006 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2006$RainCount, na.rm = TRUE)*0.5
Oya2006 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2006 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2006$DateTime <- format(Oya2006$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2006, file = "C:/Users/.../Desktop/Oya2006.csv", row.names = FALSE)
Oya2006$DateTime = as.POSIXct(Oya2006$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2008_ori <- Oya2008
## AirTemp, RainCount, 以下の期間を苗畑と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2008-09-17 00:00", "2008-09-25 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2008 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2008 <- Oya2008 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2008$AirTemp, na.rm = TRUE)
Oya2008 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2008$RainCount, na.rm = TRUE)*0.5
Oya2008 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2008$DateTime <- format(Oya2008$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2008, file = "C:/Users/.../Desktop/Oya2008.csv", row.names = FALSE)
Oya2008$DateTime = as.POSIXct(Oya2008$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2009_ori <- Oya2009
## AirTemp, RainCount, 以下の期間を苗畑と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2009-03-04 00:00", "2009-05-11 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2009 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2009 <- Oya2009 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2009$AirTemp, na.rm = TRUE)
Oya2009 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2009 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2009 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2009$RainCount, na.rm = TRUE)*0.5
Oya2009 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2009 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2009 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2009$DateTime <- format(Oya2009$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2009, file = "C:/Users/.../Desktop/Oya2009.csv", row.names = FALSE)
Oya2009$DateTime = as.POSIXct(Oya2009$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# 最初からやり直す
Oya2015 = read.csv("C:/Users/.../desktop/Oya2015.csv", stringsAsFactors = FALSE)
Oya2015$DateTime = as.POSIXct(Oya2015$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2015_ori <- Oya2015
## AirTemp, RainCount, 以下の期間を苗畑と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-03-31 00:00", "2015-05-28 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2015 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2015 <- Oya2015 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2015$AirTemp, na.rm = TRUE)
Oya2015 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2015 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2015 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2015$RainCount, na.rm = TRUE)*0.5
Oya2015 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2015 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2015 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2015$DateTime <- format(Oya2015$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2015, file = "C:/Users/.../Desktop/Oya2015.csv", row.names = FALSE)
Oya2015$DateTime = as.POSIXct(Oya2015$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2016_ori <- Oya2016
## AirTemp, 以下の期間を大谷山-2.2して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2016-05-25 00:00", "2016-06-24 23:50"),
c("2016-10-09 00:00", "2016-12-27 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2016 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2016 <- Oya2016 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount, 以下の期間を大谷山と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2016-10-09 00:00", "2016-12-27 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2016 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2016 <- Oya2016 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2016$AirTemp, na.rm = TRUE)
Oya2016 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2016 %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2016 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2016 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2016 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2016$RainCount, na.rm = TRUE)*0.5
Oya2016 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2016 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2016 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2016$DateTime <- format(Oya2016$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2016, file = "C:/Users/.../Desktop/Oya2016.csv", row.names = FALSE)
Oya2016$DateTime = as.POSIXct(Oya2016$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# オリジナルのデータフレームをOyaXXXX_oriに待避
Oya2017_ori <- Oya2017
## AirTemp, RainCount, 以下の期間を苗畑と置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2017-08-28 00:00", "2017-09-04 23:50"),
c("2017-09-17 00:00", "2017-09-25 23:50")
)
# 各日付範囲でデータを置換
# NaeXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Nae2017 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# OyaXXXXの該当期間のデータを置換
Oya2017 <- Oya2017 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new - 2.2, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Oya2017$AirTemp, na.rm = TRUE)
Oya2017 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Oya2017 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Oya2017$RainCount, na.rm = TRUE)*0.5
Oya2017 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Oya2017 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# OyaXXXXをデスクトップにcsvファイルとして保存
Oya2017$DateTime <- format(Oya2017$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Oya2017, file = "C:/Users/.../Desktop/Oya2017.csv", row.names = FALSE)
Oya2017$DateTime = as.POSIXct(Oya2017$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# アメダス佐野のデータ読み込み
Sano1997 = read.csv("C:/Users/.../desktop/Sano1997.csv", stringsAsFactors = FALSE)
Sano1997$DateTime = as.POSIXct(Sano1997$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara1997_ori <- Kara1997
## AirTemp, 以下の期間をアメダス*0.97+0.24して置換, RainCount, 以下の期間を=アメダスとして置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1997-07-22 00:00", "1997-08-04 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano1997 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara1997 <- Kara1997 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new")) %>%
select(-c(Date, Time, Rain))
# 結果の確認
mean(Kara1997$AirTemp, na.rm = TRUE)
Kara1997 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara1997 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara1997$RainCount, na.rm = TRUE)*0.5
Kara1997 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara1997 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara1997$DateTime <- format(Kara1997$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara1997, file = "C:/Users/.../Desktop/Kara1997.csv", row.names = FALSE)
Kara1997$DateTime = as.POSIXct(Kara1997$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
# アメダス佐野のデータ読み込み
Sano1998 = read.csv("C:/Users/.../desktop/Sano1998.csv", stringsAsFactors = FALSE)
Sano1998$DateTime = as.POSIXct(Sano1998$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara1998_ori <- Kara1998
## RainCount, 以下の期間を=アメダスとして置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1998-05-19 00:00", "1998-06-23 23:50"),
c("1998-11-06 00:00", "1998-12-31 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano1998 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara1998 <- Kara1998 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
## AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1998-11-06 00:00", "1998-12-31 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano1998 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara1998 <- Kara1998 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara1998$AirTemp, na.rm = TRUE)
Kara1998 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara1998 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara1998$RainCount, na.rm = TRUE)*0.5
Kara1998 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara1998 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara1998 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara1998 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara1998$DateTime <- format(Kara1998$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara1998, file = "C:/Users/.../Desktop/Kara1998.csv", row.names = FALSE)
Kara1998$DateTime = as.POSIXct(Kara1998$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 10月4日から31日までのデータを取得
for (day in 4:31) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=1999&month=10&day=", day, "&view=p1")
page <- read_html(url)
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("1999-10-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day - 3]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano1999.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano1999 = read.csv("C:/Users/.../desktop/Sano1999.csv", stringsAsFactors = FALSE)
Sano1999$DateTime = as.POSIXct(Sano1999$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara1999_ori <- Kara1999
## RainCount, 以下の期間を=アメダスとして置換, AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1999-10-05 00:00", "1999-10-31 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano1999 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara1999 <- Kara1999 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara1999$AirTemp, na.rm = TRUE)
Kara1999 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara1999$RainCount, na.rm = TRUE)*0.5
Kara1999 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara1999$DateTime <- format(Kara1999$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara1999, file = "C:/Users/.../Desktop/Kara1999.csv", row.names = FALSE)
Kara1999$DateTime = as.POSIXct(Kara1999$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 3月1日から19日までのデータを取得
for (day in 1:19) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2000&month=03&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2000-03-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2000.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2000 = read.csv("C:/Users/.../desktop/Sano2000.csv", stringsAsFactors = FALSE)
Sano2000$DateTime = as.POSIXct(Sano2000$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2000_ori <- Kara2000
## RainCount, 以下の期間を=アメダスとして置換, AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2000-03-02 00:00", "2000-03-19 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2000 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2000 <- Kara2000 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2000$AirTemp, na.rm = TRUE)
Kara2000 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2000$RainCount, na.rm = TRUE)*0.5
Kara2000 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2000$DateTime <- format(Kara2000$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2000, file = "C:/Users/.../Desktop/Kara2000.csv", row.names = FALSE)
Kara2000$DateTime = as.POSIXct(Kara2000$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 4月7日から29日までのデータを取得
for (day in 7:29) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2001&month=04&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2001-04-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2001_1.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2001 = read.csv("C:/Users/.../desktop/Sano2001.csv", stringsAsFactors = FALSE)
Sano2001$DateTime = as.POSIXct(Sano2001$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2001_ori <- Kara2001
## AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2001-04-08 00:00", "2001-04-29 23:50"),
c("2001-05-21 00:00", "2001-05-21 23:50"),
c("2001-05-28 00:00", "2001-06-25 23:50"),
c("2001-07-06 00:00", "2001-07-13 23:50"),
c("2001-07-16 00:00", "2001-07-17 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2001 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2001 <- Kara2001 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2001$AirTemp, na.rm = TRUE)
Kara2001 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2001 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2001 %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2001 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2001$DateTime <- format(Kara2001$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2001, file = "C:/Users/.../Desktop/Kara2001.csv", row.names = FALSE)
Kara2001$DateTime = as.POSIXct(Kara2001$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 1ヶ月ごとにデータを取得
for (day in 7:29) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2002&month=05&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2002-05-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2002_2.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2002 = read.csv("C:/Users/.../desktop/Sano2002.csv", stringsAsFactors = FALSE)
Sano2002$DateTime = as.POSIXct(Sano2002$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2002_ori <- Kara2002
## AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2002-02-01 00:00", "2002-02-15 23:50"),
c("2002-02-22 00:00", "2002-02-27 23:50"),
c("2002-05-08 00:00", "2002-05-29 23:50"),
c("2002-07-11 00:00", "2002-07-11 23:50"),
c("2002-07-17 00:00", "2002-08-07 23:50"),
c("2002-09-17 00:00", "2002-11-04 23:50"),
c("2002-11-11 00:00", "2002-11-12 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2002 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2002 <- Kara2002 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2002$AirTemp, na.rm = TRUE)
Kara2002 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2002 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2002 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2002 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2002 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2002 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2002 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2002$DateTime <- format(Kara2002$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2002, file = "C:/Users/.../Desktop/Kara2002.csv", row.names = FALSE)
Kara2002$DateTime = as.POSIXct(Kara2002$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト(ここから)
data_list <- list()
# 1ヶ月ごとにデータを取得
for (day in 16:17) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2003&month=09&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2003-09-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2003_4.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2003 = read.csv("C:/Users/.../desktop/Sano2003.csv", stringsAsFactors = FALSE)
Sano2003$DateTime = as.POSIXct(Sano2003$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2003_ori <- Kara2003
## AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2003-02-22 00:00", "2003-02-22 23:50"),
c("2003-02-28 00:00", "2003-03-09 23:50"),
c("2003-03-11 00:00", "2003-03-21 23:50"),
c("2003-08-03 00:00", "2003-08-23 23:50"),
c("2003-09-17 00:00", "2003-09-17 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2003 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2003 <- Kara2003 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2003$AirTemp, na.rm = TRUE)
Kara2003 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2003 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2003 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2003 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2003$DateTime <- format(Kara2003$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2003, file = "C:/Users/.../Desktop/Kara2003.csv", row.names = FALSE)
Kara2003$DateTime = as.POSIXct(Kara2003$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト(ここから)
data_list <- list()
# 1ヶ月ごとにデータを取得
for (day in 1:10) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2004&month=11&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2004-11-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2004_7.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2004 = read.csv("C:/Users/.../desktop/Sano2004.csv", stringsAsFactors = FALSE)
Sano2004$DateTime = as.POSIXct(Sano2004$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2004_ori <- Kara2004
## AirTemp, 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2004-02-27 00:00", "2004-03-05 23:50"),
c("2004-03-09 00:00", "2004-04-25 23:50"),
c("2004-04-29 00:00", "2004-05-06 23:50"),
c("2004-05-17 00:00", "2004-05-25 23:50"),
c("2004-05-26 00:00", "2004-05-27 23:50"),
c("2004-10-13 00:00", "2004-11-10 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2004 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2004 <- Kara2004 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount, 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2004-05-01 00:00", "2004-06-30 23:50"),
c("2004-10-13 00:00", "2004-11-10 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2004 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2004 <- Kara2004 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2004$AirTemp, na.rm = TRUE)
Kara2004 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2004 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2004 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2004 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2004 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2004 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2004$RainCount, na.rm = TRUE)*0.5
Kara2004 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2004 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2004 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2004 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
## write.csv(Kara2004, file = "C:/Users/.../Desktop/Kara2004.csv", row.names = FALSE)
Kara2004$DateTime <- format(Kara2004$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2004, file = "C:/Users/.../Desktop/Kara2004.csv", row.names = FALSE)
Kara2004$DateTime = as.POSIXct(Kara2004$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 5月9日から12月31日までのデータを取得
for (month in 5:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 5 && day < 9) || (month == 6 && day > 30) || (month == 9 && day > 30) || (month == 11 && day > 30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2005&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2005-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2005.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2005 = read.csv("C:/Users/.../desktop/Sano2005.csv", stringsAsFactors = FALSE)
Sano2005$DateTime = as.POSIXct(Sano2005$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2005_ori <- Kara2005
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2005-05-09 00:00", "2005-12-31 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2005 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2005 <- Kara2005 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2005$AirTemp, na.rm = TRUE)
Kara2005 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2005 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2005$RainCount, na.rm = TRUE)*0.5
Kara2005 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2005 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2005$DateTime <- format(Kara2005$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2005, file = "C:/Users/.../Desktop/Kara2005.csv", row.names = FALSE)
Kara2005$DateTime = as.POSIXct(Kara2005$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 1月1日から4月25日までのデータを取得
for (month in 1:4) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 2 && day > 28) || (month == 4 && day > 25)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2006&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2006-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2006.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する
# アメダス佐野のデータ読み込み
Sano2006 = read.csv("C:/Users/.../desktop/Sano2006.csv", stringsAsFactors = FALSE)
Sano2006$DateTime = as.POSIXct(Sano2006$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2006_ori <- Kara2006
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2006-01-01 00:00", "2006-04-25 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2006 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2006 <- Kara2006 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2006$AirTemp, na.rm = TRUE)
Kara2006 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2006 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2006 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2006 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2006$RainCount, na.rm = TRUE)*0.5
Kara2006 %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2006 %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2006 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2006 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2006$DateTime <- format(Kara2006$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2006, file = "C:/Users/.../Desktop/Kara2006.csv", row.names = FALSE)
Kara2006$DateTime = as.POSIXct(Kara2006$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト(ここから)
data_list <- list()
# 1ヶ月ごとにデータを取得
for (day in 4:6) {
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2007&month=7&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2007-7-", sprintf("%02d", day))))
# データをリストに追加
data_list[[day]] <- table
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2007.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭行に0:00のデータを付け加えること
# アメダス佐野のデータ読み込み
Sano2007 = read.csv("C:/Users/.../desktop/Sano2007.csv", stringsAsFactors = FALSE)
Sano2007$DateTime = as.POSIXct(Sano2007$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2007_ori <- Kara2007
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2007-07-04 00:00", "2007-07-06 23:50"))
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2007 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2007 <- Kara2007 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2007$AirTemp, na.rm = TRUE)
Kara2007 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2007$RainCount, na.rm = TRUE)*0.5
Kara2007 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2007$DateTime <- format(Kara2007$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2007, file = "C:/Users/.../Desktop/Kara2007.csv", row.names = FALSE)
Kara2007$DateTime = as.POSIXct(Kara2007$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 10月27日から12月31日までのデータを取得
for (month in 10:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 10 && day < 27) || (month == 11 && day > 30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2008&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2008-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2008.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭に0:00を追加すること
# アメダス佐野のデータ読み込み
Sano2008 = read.csv("C:/Users/.../desktop/Sano2008.csv", stringsAsFactors = FALSE)
Sano2008$DateTime = as.POSIXct(Sano2008$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2008_ori <- Kara2008
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2008-10-27 00:00", "2008-12-31 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2008 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2008 <- Kara2008 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2008$AirTemp, na.rm = TRUE)
Kara2008 %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2008 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2008 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2008$RainCount, na.rm = TRUE)*0.5
Kara2008 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2008 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2008 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2008$DateTime <- format(Kara2008$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2008, file = "C:/Users/.../Desktop/Kara2008.csv", row.names = FALSE)
Kara2008$DateTime = as.POSIXct(Kara2008$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 1月から3月、および12月までのデータを取得
for (month in c(1:3, 12)) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day > 5) || (month == 2 && day > 28 ) || (month == 3 && day > 9) || (month == 12 && day > 8)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2009&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2009-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2009.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭に0:00を追加すること
# アメダス佐野のデータ読み込み
Sano2009 = read.csv("C:/Users/.../desktop/Sano2009.csv", stringsAsFactors = FALSE)
Sano2009$DateTime = as.POSIXct(Sano2009$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2009_ori <- Kara2009
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2009-01-01 00:00", "2009-01-05 23:50"),
c("2009-02-14 00:00", "2009-03-09 23:50"),
c("2009-12-04 00:00", "2009-12-08 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2009 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2009 <- Kara2009 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2009$AirTemp, na.rm = TRUE)
Kara2009 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2009 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2009 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2009 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2009$RainCount, na.rm = TRUE)*0.5
Kara2009 %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2009 %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2009 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2009 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2009$DateTime <- format(Kara2009$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2009, file = "C:/Users/.../Desktop/Kara2009.csv", row.names = FALSE)
Kara2009$DateTime = as.POSIXct(Kara2009$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Kara2011 = read.csv("C:/Users/.../desktop/Kara2011.csv", stringsAsFactors = FALSE)
Kara2011$DateTime = as.POSIXct(Kara2011$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 6月から9月までのデータを取得
for (month in 5:9) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 5 && day < 31) || (month == 6 && day > 30 ) || (month == 9 && day > 1)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2011&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2011-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2011.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭に0:00を追加すること
# アメダス佐野のデータ読み込み
Sano2011 = read.csv("C:/Users/.../desktop/Sano2011.csv", stringsAsFactors = FALSE)
Sano2011$DateTime = as.POSIXct(Sano2011$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2011_ori <- Kara2011
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2011-06-01 00:00", "2011-09-01 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2011 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2011 <- Kara2011 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Kara2011$RainCount, na.rm = TRUE)*0.5
Kara2011 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2011 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2011 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2011 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2011$DateTime <- format(Kara2011$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2011, file = "C:/Users/.../Desktop/Kara2011.csv", row.names = FALSE)
Kara2011$DateTime = as.POSIXct(Kara2011$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 3月31日から12月31日までのデータを取得
for (month in 3:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 3 && day < 31) || (month == 4 && day > 30 ) || (month == 6 && day > 30) || (month == 9 && day > 30) || (month == 11 && day > 30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2013&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2013-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2013.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭に0:00を追加すること
# アメダス佐野のデータ読み込み
Sano2013 = read.csv("C:/Users/.../desktop/Sano2013.csv", stringsAsFactors = FALSE)
Sano2013$DateTime = as.POSIXct(Sano2013$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2013_ori <- Kara2013
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2013-04-01 00:00", "2013-12-31 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2013 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2013 <- Kara2013 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Kara2013$RainCount, na.rm = TRUE)*0.5
Kara2013 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2013 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2013$DateTime <- format(Kara2013$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2013, file = "C:/Users/.../Desktop/Kara2013.csv", row.names = FALSE)
Kara2013$DateTime = as.POSIXct(Kara2013$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Kara2014 = read.csv("C:/Users/.../desktop/Kara2014.csv", stringsAsFactors = FALSE)
Kara2014$DateTime = as.POSIXct(Kara2014$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 3月16日から12月5日までのデータを取得
for (month in c(3:5, 10:12)) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 3 && day < 16) || (month == 4 && day > 30 ) || (month == 5 && day > 2 ) || (month == 10 && day < 31) || (month == 11 && day > 30) || (month == 12 && day > 5)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2014&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2014-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2014.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭に0:00を追加すること
# アメダス佐野のデータ読み込み
Sano2014 = read.csv("C:/Users/.../desktop/Sano2014.csv", stringsAsFactors = FALSE)
Sano2014$DateTime = as.POSIXct(Sano2014$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2014_ori <- Kara2014
## AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2014-03-17 00:00", "2014-03-18 23:50"),
c("2014-03-24 00:00", "2014-05-02 23:50"),
c("2014-11-01 00:00", "2014-12-05 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2014 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2014 <- Kara2014 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2014-03-24 00:00", "2014-05-02 23:50"),
c("2014-11-01 00:00", "2014-12-05 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2014 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2014 <- Kara2014 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2014$AirTemp, na.rm = TRUE)
Kara2014 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2014 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2014 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2014 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2014 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2014$RainCount, na.rm = TRUE)*0.5
Kara2014 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2014 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2014 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2014 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2014 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2014$DateTime <- format(Kara2014$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2014, file = "C:/Users/.../Desktop/Kara2014.csv", row.names = FALSE)
Kara2014$DateTime = as.POSIXct(Kara2014$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Kara2015 = read.csv("C:/Users/.../desktop/Kara2015.csv", stringsAsFactors = FALSE)
Kara2015$DateTime = as.POSIXct(Kara2015$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
# データを格納するリスト
data_list <- list()
# 1月1日から9月3日までのデータを取得
for (month in 1:9) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 2 && day > 28) || (month == 4 && day > 30 ) || (month == 6 && day > 30 ) || (month == 9 && day > 3)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=41&block_no=1018&year=2015&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("2015-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Sano2015.csv", row.names = FALSE)
## Amedas_SanoXXXXを整形してSanoXXXXを作成する、先頭に0:00を追加すること
# アメダス佐野のデータ読み込み
Sano2015 = read.csv("C:/Users/.../desktop/Sano2015.csv", stringsAsFactors = FALSE)
Sano2015$DateTime = as.POSIXct(Sano2015$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをKaraXXXX_oriに待避
Kara2015_ori <- Kara2015
## AirTemp: 以下の期間をアメダス*0.97+0.24して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-02-08 00:00", "2015-02-27 23:50"),
c("2015-04-06 00:00", "2015-07-02 23:50"),
c("2015-08-20 00:00", "2015-09-03 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2015 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2015 <- Kara2015 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.94 + 0.24, AirTemp)) %>%
select(-ends_with(".new"))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-01-01 00:00", "2015-09-03 23:50")
)
# 各日付範囲でデータを置換
# SanoXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Sano2015 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# KaraXXXXの該当期間のデータを置換
Kara2015 <- Kara2015 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
mean(Kara2015$AirTemp, na.rm = TRUE)
Kara2015 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Kara2015 %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
sum(Kara2015$RainCount, na.rm = TRUE)*0.5
Kara2015 %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Kara2015 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# KaraXXXXをデスクトップにcsvファイルとして保存
Kara2015$DateTime <- format(Kara2015$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Kara2015, file = "C:/Users/.../Desktop/Kara2015.csv", row.names = FALSE)
Kara2015$DateTime = as.POSIXct(Kara2015$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 1月6日から2月5日までのデータを取得(秩父、1時間ごと)
# データを格納するリスト
data_list <- list()
for (month in 1:2) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 6) || (month == 2 && day > 5 )) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=1997&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("1997-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = "C:/Users/.../Desktop/Amedas_Chichibu1997.csv", row.names = FALSE)
### 1月6日から2月5日までのデータを取得(三峯、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 1:2) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 6) || (month == 2 && day > 5 )) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=1997&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("1997-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Mitsumine1997.csv", row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu1997 = read.csv("C:/Users/.../desktop/Chichibu1997.csv", stringsAsFactors = FALSE)
Chichibu1997$DateTime = as.POSIXct(Chichibu1997$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをChicXXXX_oriに待避
Chic1997_ori <- Chic1997
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1997-01-07 00:00", "1997-02-05 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu1997 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic1997 <- Chic1997 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic1997$RainCount, na.rm = TRUE)*0.5
Chic1997 %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic1997 %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic1997$AirTemp, na.rm = TRUE)
Chic1997 %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic1997 %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic1997$DateTime <- format(Chic1997$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic1997, file = "C:/Users/.../Desktop/Chic1997.csv", row.names = FALSE)
Chic1997$DateTime = as.POSIXct(Chic1997$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 11月3日から12月31日までのデータを取得(秩父、1時間ごと)
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 3) || (month == 11 && day > 30 ) || (month == 12 && day > 31)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=1998&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("1998-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = "C:/Users/.../Desktop/Amedas_Chichibu1998.csv", row.names = FALSE)
### 11月3日から12月31日までのデータを取得(三峯、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 3) || (month == 11 && day > 30 ) || (month == 12 && day > 31)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=1998&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("1998-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Mitsumine1998.csv", row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu1998 = read.csv("C:/Users/.../desktop/Chichibu1998.csv", stringsAsFactors = FALSE)
Chichibu1998$DateTime = as.POSIXct(Chichibu1998$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをChicXXXX_oriに待避
Chic1998_ori <- Chic1998
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1998-11-04 00:00", "1998-12-31 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu1998 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic1998 <- Chic1998 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic1998$RainCount, na.rm = TRUE)*0.5
Chic1998 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic1998 %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic1998$AirTemp, na.rm = TRUE)
Chic1998 %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic1998 %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic1998$DateTime <- format(Chic1998$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic1998, file = "C:/Users/.../Desktop/Chic1998.csv", row.names = FALSE)
Chic1998$DateTime = as.POSIXct(Chic1998$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 9月1日から11月30日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 9:11) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 9 && day > 30) || (month == 10 && day > 31 ) || (month == 11 && day > 30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=1999&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0("1999-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(時分 != "時分")
# 降水量と日時のみ
data <- data %>% select(c("時分", "降水量(mm)", "Date"))
# CSVファイルとして保存
write.csv(data, file = "C:/Users/.../Desktop/Amedas_Mitsumine1999.csv", row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu1999 = read.csv("C:/Users/.../desktop/Chichibu1999.csv", stringsAsFactors = FALSE)
Chichibu1999$DateTime = as.POSIXct(Chichibu1999$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをChicXXXX_oriに待避
Chic1999_ori <- Chic1999
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("1999-09-01 00:00", "1999-11-30 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu1999 %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic1999 <- Chic1999 %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic1999$RainCount, na.rm = TRUE)*0.5
Chic1999 %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic1999 %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic1999 %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic1999$DateTime <- format(Chic1999$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic1999, file = "C:/Users/.../Desktop/Chic1999.csv", row.names = FALSE)
Chic1999$DateTime = as.POSIXct(Chic1999$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 11月16日から12月14日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2000
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 16) || (month == 11 && day > 30 ) || (month == 12 && day > 14)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 11月16日から12月14日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 16) || (month == 11 && day > 30 ) || (month == 12 && day > 14)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data <- get(paste0("Chichibu", this_year))
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2000-11-17 00:00", "2000-12-14 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2000$DateTime <- format(Chic2000$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2000, file = "C:/Users/.../Desktop/Chic2000.csv", row.names = FALSE)
Chic2000$DateTime = as.POSIXct(Chic2000$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 2月16日から3月3日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2001
# データを格納するリスト
data_list <- list()
for (month in 2:3) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 2 && day < 16) || (month == 2 && day > 28 ) || (month == 3 && day > 3)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 2月16日から3月3日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 2:3) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 2 && day < 16) || (month == 2 && day > 28 ) || (month == 3 && day > 3)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2001-02-17 00:00", "2001-03-03 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2001$DateTime <- format(Chic2001$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2001, file = "C:/Users/.../Desktop/Chic2001.csv", row.names = FALSE)
Chic2001$DateTime = as.POSIXct(Chic2001$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 11月1日から12月14日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2002
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day > 30 ) || (month == 12 && day > 14)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 11月1日から12月14日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day > 30 ) || (month == 12 && day > 14)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2002-11-02 00:00", "2002-12-14 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2002$DateTime <- format(Chic2002$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2002, file = "C:/Users/.../Desktop/Chic2002.csv", row.names = FALSE)
Chic2002$DateTime = as.POSIXct(Chic2002$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 3月1日から5月7日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2004
# データを格納するリスト
data_list <- list()
for (month in 3:5) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 4 && day > 30 ) || (month == 5 && day > 7)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 3月1日から5月7日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 3:5) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 4 && day > 30 ) || (month == 5 && day > 7)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2004-03-02 00:00", "2004-05-07 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2004$DateTime <- format(Chic2004$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2004, file = "C:/Users/.../Desktop/Chic2004.csv", row.names = FALSE)
Chic2004$DateTime = as.POSIXct(Chic2004$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 1月3日から2月13日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2005
# データを格納するリスト
data_list <- list()
for (month in 1:2) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 3 ) || (month == 2 && day > 13)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 1月3日から12月31日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 1:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 3 ) || (month == 2 && day > 28) || (month == 4 && day > 30) || (month == 6 && day > 30) || (month == 9 && day > 30) || (month == 11 && day > 30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2005-01-04 00:00", "2005-02-13 23:50"),
c("2005-05-01 00:00", "2005-12-31 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
## AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2005-01-04 00:00", "2005-02-13 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2005$DateTime <- format(Chic2005$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2005, file = "C:/Users/.../Desktop/Chic2005.csv", row.names = FALSE)
Chic2005$DateTime = as.POSIXct(Chic2005$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 1月19日から4月23日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2006
# データを格納するリスト
data_list <- list()
for (month in 1:4) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 19 ) || (month == 2 && day > 28) || (month == 4 && day > 23)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 1月19日から4月23日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 1:4) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 19 ) || (month == 2 && day > 28) || (month == 4 && day > 23)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2006-01-20 00:00", "2006-04-23 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 4) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 4) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2006$DateTime <- format(Chic2006$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2006, file = "C:/Users/.../Desktop/Chic2006.csv", row.names = FALSE)
Chic2006$DateTime = as.POSIXct(Chic2006$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Chic2007 = read.csv("C:/Users/.../desktop/Chic2007.csv", stringsAsFactors = FALSE)
Chic2007$DateTime = as.POSIXct(Chic2007$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
### 11月27日から12月3日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2007
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 27 ) || (month == 11 && day > 30) || (month == 12 && day > 3)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/hourly_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# ヘッダー行を削除
data <- data[-1, ]
# 時間列を数値型に変換
data$時 <- as.numeric(data$時)
# NAの行を削除
data <- data %>% filter(!is.na(時))
# 時間列をdatetime型に変換
data$Time <- ymd_hms(paste0(data$Date, " ", sprintf("%02d", data$時), ":00:00"))
# 10分間隔の時間列を作成
time_range <- seq(from = min(data$Time, na.rm = TRUE), to = max(data$Time, na.rm = TRUE) + hours(1), by = "10 mins")
# 新しいデータフレームを作成
new_data <- data.frame(Time = time_range)
# 気温データを1時間ごとにコピーして10分間隔に引き延ばす
new_data <- new_data %>%
mutate(Temperature = sapply(Time, function(x) {
datetime_data <- data %>% filter(Date == date(x) & hour(Time) == hour(x))
if (nrow(datetime_data) > 0) {
return(datetime_data$`気温(℃)`[1])
} else {
return(NA)
}
}))
# CSVファイルとして保存
write.csv(new_data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 9月25日から12月3日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 9:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 9 && day < 25 ) || (month == 9 && day > 30) || (month == 11 && day > 30) || (month == 12 && day > 3)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2007-09-26 00:00", "2007-12-03 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
## AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2007-11-28 00:00", "2007-12-03 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2007$DateTime <- format(Chic2007$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2007, file = "C:/Users/.../Desktop/Chic2007.csv", row.names = FALSE)
Chic2007$DateTime = as.POSIXct(Chic2007$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Chic2009 = read.csv("C:/Users/.../desktop/Chic2009.csv", stringsAsFactors = FALSE)
Chic2009$DateTime = as.POSIXct(Chic2009$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
### 3月8日から3月27日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2009
# データを格納するリスト
data_list <- list()
for (month in 3:3) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 3 && day < 8 ) || (month == 3 && day > 27)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 3月8日から3月27日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 3:3) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 3 && day < 8 ) || (month == 3 && day > 27)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2009-03-09 00:00", "2009-03-27 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2009$DateTime <- format(Chic2009$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2009, file = "C:/Users/.../Desktop/Chic2009.csv", row.names = FALSE)
Chic2009$DateTime = as.POSIXct(Chic2009$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Chic2015 = read.csv("C:/Users/.../desktop/Chic2015.csv", stringsAsFactors = FALSE)
Chic2015$DateTime = as.POSIXct(Chic2015$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
### 1月23日から3月6日、5月4日から6月8日までのデータを取得(秩父、気温、1時間ごと)
this_year <- 2015
# データを格納するリスト
data_list <- list()
for (month in c(1:3, 5:6)) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 23 ) || (month == 2 && day > 28) || (month == 3 && day > 6) || (month == 5 && day < 4) || (month == 6 && day > 8)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 5月4日から6月8日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 5:6) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 5 && day < 4 ) || (month == 6 && day > 8)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-05-05 00:00", "2015-06-08 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
## AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2015-01-24 00:00", "2015-03-06 23:50"),
c("2015-05-05 00:00", "2015-06-08 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 5) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 2) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 3) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 5) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 6) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2015$DateTime <- format(Chic2015$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2015, file = "C:/Users/.../Desktop/Chic2015.csv", row.names = FALSE)
Chic2015$DateTime = as.POSIXct(Chic2015$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## ウェブスクレイピングでアメダスデータを取得する
### 11月3日から12月31日のデータを取得(秩父、気温、1時間ごと)
this_year <- 2016
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 3 ) || (month == 11 && day > 30) || (month == 12 && day > 31)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 11月3日から12月31日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 11:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 11 && day < 3 ) || (month == 11 && day > 30) || (month == 12 && day > 31)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2016-11-04 00:00", "2016-12-31 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2016$DateTime <- format(Chic2016$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2016, file = "C:/Users/.../Desktop/Chic2016.csv", row.names = FALSE)
Chic2016$DateTime = as.POSIXct(Chic2016$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Chic2017 = read.csv("C:/Users/.../desktop/Chic2017.csv", stringsAsFactors = FALSE)
Chic2017$DateTime = as.POSIXct(Chic2017$DateTime, format='%Y/%m/%d %H:%M')
## ウェブスクレイピングでアメダスデータを取得する
### 1月1日から1月4日のデータを取得(秩父、気温、1時間ごと)
this_year <- 2017
# データを格納するリスト
data_list <- list()
for (month in 1:1) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day > 4)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
### 1月1日から1月4日、6月1日から7月31日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in c(1, 6:7)) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day > 4) || (month == 6 && day >30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_ChichibuとAmedas_Mitsumineを統合してChichibuXXXXを作成する、1時間データは1:00からデータが始まる
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2017-01-01 00:00", "2017-01-04 23:50"),
c("2017-06-01 00:00", "2017-07-31 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
## AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2017-01-01 00:00", "2017-01-04 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 6) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2017$DateTime <- format(Chic2017$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2017, file = "C:/Users/.../Desktop/Chic2017.csv", row.names = FALSE)
Chic2017$DateTime = as.POSIXct(Chic2017$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
## データの読み直し
Chic2018 = read.csv("C:/Users/.../desktop/Chic2018.csv", stringsAsFactors = FALSE)
Chic2018$DateTime = as.POSIXct(Chic2018$DateTime, format='%Y/%m/%d %H:%M')
this_year <- 2018
## ウェブスクレイピングでアメダスデータを取得する
### 9月24日から10月5日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 9:10) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 9 && day < 24) || (month == 9 && day >30) || (month == 10 && day >5)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_Mitsumineを調整してChichibuXXXXを作成する
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2018-09-25 00:00", "2018-10-05 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2018$DateTime <- format(Chic2018$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2018, file = "C:/Users/.../Desktop/Chic2018.csv", row.names = FALSE)
Chic2018$DateTime = as.POSIXct(Chic2018$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
this_year <- 2021
## ウェブスクレイピングでアメダスデータを取得する
### 1月2日から1月4日、7月16日から10月8日までのデータを取得(秩父、気温、1時間ごと)
# データを格納するリスト
data_list <- list()
for (month in c(1, 7:10)) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 2) || (month == 1 && day >4) || (month == 7 && day < 16) || (month == 9 && day > 30) || (month == 10 && day > 8)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
## ウェブスクレイピングでアメダスデータを取得する
### 1月2日から1月4日、7月16日から10月8日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in c(1, 7:10)) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day < 2) || (month == 1 && day >4) || (month == 7 && day < 16) || (month == 9 && day > 30) || (month == 10 && day > 8)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_Mitsumineを調整してChichibuXXXXを作成する
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2021-01-03 00:00", "2021-01-04 23:50"),
c("2021-07-17 00:00", "2021-08-06 23:50"),
c("2021-08-20 00:00", "2021-09-06 23:50"),
c("2021-09-19 00:00", "2021-10-08 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 7) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 8) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 7) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 8) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2021$DateTime <- format(Chic2021$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2021, file = "C:/Users/.../Desktop/Chic2021.csv", row.names = FALSE)
Chic2021$DateTime = as.POSIXct(Chic2021$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
this_year <- 2022
## ウェブスクレイピングでアメダスデータを取得する
### 9月24日から12月31日までのデータを取得(秩父、気温、1時間ごと)
# データを格納するリスト
data_list <- list()
for (month in 9:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 9 && day < 24) || (month == 9 && day >30) || (month == 11 && day >30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
## ウェブスクレイピングでアメダスデータを取得する
### 9月24日から12月31日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 9:12) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 9 && day < 24) || (month == 9 && day > 30) || (month == 11 && day > 30)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_Mitsumineを調整してChichibuXXXXを作成する
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2022-09-25 00:00", "2022-10-08 23:50"),
c("2022-10-13 00:00", "2022-11-04 23:50"),
c("2022-11-07 00:00", "2022-12-31 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 9) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 10) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 11) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
Chic_data %>% filter(month(DateTime) == 12) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2022$DateTime <- format(Chic2022$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2022, file = "C:/Users/.../Desktop/Chic2022.csv", row.names = FALSE)
Chic2022$DateTime = as.POSIXct(Chic2022$DateTime, format='%Y/%m/%d %H:%M') # 機器不調のため、気温と降水量を他観測所から引用
library(dplyr)
library(lubridate)
library(rvest)
this_year <- 2023
## ウェブスクレイピングでアメダスデータを取得する
### 1月1日から1月4日までのデータを取得(秩父、気温、1時間ごと)
# データを格納するリスト
data_list <- list()
for (month in 1:1) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day > 4)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_s1.php?prec_no=43&block_no=47641&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "気温(℃)"] <- "AirTemp"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 気温と日時のみ
data <- data %>% select(c("HourMinute", "AirTemp", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Chichibu", this_year, ".csv"), row.names = FALSE)
## ウェブスクレイピングでアメダスデータを取得する
### 1月1日から1月4日までのデータを取得(三峯、降水量、10分ごと)
# データを格納するリスト
data_list <- list()
for (month in 1:1) {
for (day in 1:31) {
# 日付が存在しない場合はスキップ
if ((month == 1 && day > 4)) {
next
}
url <- paste0("https://www.data.jma.go.jp/stats/etrn/view/10min_a1.php?prec_no=43&block_no=1000&year=", this_year, "&month=", month, "&day=", day, "&view=p1")
page <- read_html(url, encoding = "UTF-8")
# テーブルの抽出
table <- page %>% html_node("table.data2_s") %>% html_table(fill = TRUE)
# 列名の修正
colnames(table) <- make.unique(colnames(table))
colnames(table)[colnames(table) == "時分"] <- "HourMinute"
colnames(table)[colnames(table) == "降水量(mm)"] <- "Rain"
# 日付列の追加
table <- table %>% mutate(Date = ymd(paste0(this_year, "-", sprintf("%02d", month), "-", sprintf("%02d", day))))
# データをリストに追加
data_list[[paste0(month, "-", day)]] <- table
}
}
# データフレームに結合
data <- bind_rows(data_list)
# "時分"の行を削除
data <- data %>% filter(HourMinute != "時分")
# 降水量と日時のみ
data <- data %>% select(c("HourMinute", "Rain", "Date"))
# CSVファイルとして保存
write.csv(data, file = paste0("C:/Users/.../Desktop/Amedas_Mitsumine", this_year, ".csv"), row.names = FALSE)
## Amedas_Mitsumineを調整してChichibuXXXXを作成する
# アメダスデータの読み込み
Chichibu_data = read.csv(paste0("C:/Users/.../desktop/Chichibu", this_year, ".csv"), stringsAsFactors = FALSE)
Chichibu_data$DateTime = as.POSIXct(Chichibu_data$DateTime, format='%Y/%m/%d %H:%M')
assign(paste0("Chichibu", this_year), Chichibu_data)
# オリジナルのデータフレームをChicXXXX_oriに待避
assign(paste0("Chic", this_year, "_ori"), get(paste0("Chic", this_year)))
## RainCount: 以下の期間をアメダスと置換, AirTemp: 以下の期間をアメダス*0.91-2.32して置換
# 置換する日付範囲のリスト
date_ranges <- list(
c("2023-01-01 00:00", "2023-01-04 23:50")
)
# 各日付範囲でデータを置換
# ChichibuXXXXの該当期間のデータを抽出
Subset <- do.call(rbind, lapply(date_ranges, function(range) {
start_date <- as.POSIXct(range[1])
end_date <- as.POSIXct(range[2])
Chichibu_data %>% filter(DateTime >= start_date & DateTime <= end_date)
}))
# ChicXXXXの該当期間のデータを置換
Chic_data <- get(paste0("Chic", this_year))
Chic_data <- Chic_data %>%
left_join(Subset, by = "DateTime", suffix = c("", ".new")) %>%
mutate(RainCount = ifelse(!is.na(RainCount.new), RainCount.new, RainCount)) %>%
mutate(AirTemp = ifelse(!is.na(AirTemp.new), AirTemp.new *0.91 - 2.32, AirTemp)) %>%
select(-ends_with(".new"))
# 結果の確認
sum(Chic_data$RainCount, na.rm = TRUE)*0.5
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(total_rain = sum(RainCount, na.rm = TRUE)*0.5)
mean(Chic_data$AirTemp, na.rm = TRUE)
Chic_data %>% filter(month(DateTime) == 1) %>% summarize(ave_airtemp = mean(AirTemp, na.rm = TRUE))
# Chic_dataをChicXXXXに読み込ませる
assign(paste0("Chic", this_year), Chic_data)
# ChicXXXXをデスクトップにcsvファイルとして保存
Chic2023$DateTime <- format(Chic2023$DateTime, format='%Y/%m/%d %H:%M')
write.csv(Chic2023, file = "C:/Users/.../Desktop/Chic2023.csv", row.names = FALSE)
Chic2023$DateTime = as.POSIXct(Chic2023$DateTime, format='%Y/%m/%d %H:%M')