2014-10-02 2 views
0

입니다. weatherData 패키지를 사용하고있는 개인 기상 관측소에서 매 시간마다 총 강우량 값을 얻으려고합니다. 내가 가진 문제는 5 분마다 데이터를 수집하고 강수량 값이 변경 될 때까지 값이 반복된다는 것입니다. 나는 '중복 된'기능을 시도했지만 강수량이 없을 때 많은 양의 데이터가 삭제되어 시간당 강수량 요약을 얻지 못한다.매분마다 R 분당 강수량 값은

코드

아래
## Load required libraries 

library(weatherData) 
library(ggplot2) 
library(scales) 
library(plyr) 
library(reshape2) 
library(gridExtra) 
library(lubridate) 
library(weathermetrics) 
library(zoo) 

# Get data for PWS using weatherData package 

pws <- getWeatherForDate("IPENANGB2", "2014-09-01","2014-09-30", station_type = "id",opt_detailed=T, opt_custom_columns=T, custom_columns=c(1,2,6,7,10)) 

# Rename columns 
colnames(pws)<-c("time","time1","tempc","wdd","wspd","prcp") 


## Adding date columns 

pws$time<-as.POSIXct(pws$time1,format="%Y-%m-%d %H:%M:%S",tz="Australia/Perth") 
pws$year <- as.numeric(format(pws$time,"%Y")) 
pws$date <-as.Date(pws$time,format="%Y-%m-%d",tz="Australia/Perth") 
pws$year <- as.numeric(as.POSIXlt(pws$date)$year+1900) 
pws$month <- as.numeric(as.POSIXlt(pws$date)$mon+1) 
pws$monthf <- factor(pws$month,levels=as.character(1:12),labels=c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),ordered=TRUE) 
pws$weekday <- as.POSIXlt(pws$date)$wday 
pws$weekdayf <- factor(pws$weekday,levels=rev(0:6),labels=rev(c("Mon","Tue","Wed","Thu","Fri","Sat","Sun")),ordered=TRUE) 
pws$yearmonth <- as.yearmon(pws$date) 
pws$yearmonthf <- factor(pws$yearmonth) 
pws$week <- as.numeric(format(as.Date(pws$date),"%W")) 
pws$weekf<- factor(pws$week) 
pws$jday<-yday(pws$date) 
pws$hour <- as.numeric(format(strptime(pws$time, format = "%Y-%m-%d %H:%M"),format = "%H")) 
pws$min <- as.numeric(format(strptime(pws$time, format = "%Y-%m-%d %H:%M"),format = "%M")) 

# Remove duplicate values 

pws.df <- pws[!duplicated(pws$prcp),] 

답변

1

이 prcp, 당신은 tempc, WDD, WSPD의 시간당 평균 싶어 가정 참조하십시오

# used packages 
library(weatherData) 
library(lubridate) 
library(dplyr) 
library(stringr) 

# read data 
pws <- getWeatherForDate("IPENANGB2", 
         "2014-09-01", 
         "2014-09-30", 
         station_type = "id", 
         opt_detailed = T, 
         opt_custom_columns = T, 
         custom_columns = c(1, 2, 6, 7, 10)) 
# rename columns 
colnames(pws) <- c("time", "time1", "tempc", "wdd", "wspd", "prcp") 

# cleaning dataset and adding some columns 
useful_pws <- 
    pws %>% 
    select(2:6) %>% 
    filter(!str_detect(time1, "<br>")) %>% 
    mutate(time1 = ymd_hms(time1), 
      year = year(time1), 
      month = month(time1), 
      day = day(time1), 
      hour = hour(time1)) %>% 
    tbl_df() 

# summarising dataset 
useful_pws %>% 
    select(-time1) %>% 
    group_by(year, month, day, hour) %>% 
    summarise(tempc = mean(tempc, na.rm = TRUE), 
       wdd = mean(wdd, na.rm = TRUE), 
       wspd = mean(wspd, na.rm = TRUE), 
       prcp = mean(prcp, na.rm = TRUE)) 
+0

감사 미하을! 도움이되었다. –