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