2017-06-26 55 views
0

我有一些數據包含年度觀測數據,有些州只有每月的數據,有些數據都有。我想使用年度觀測數據,但如果不存在年度數據,則使用月平均值。我可以運行一個循環,但這似乎效率低下。有一個更好的方法嗎?如果沒有年度觀測使用月平均值

的樣本數據

newdat <- data.frame(state = c("co", "co", "co", "co", "co", "co"), year = c(2000,2000,2000,2001,2001,2001), 
        type = c("year", "month", "month", "month", "month", "month"), 
        value = c(6,6,10,5,2,9)) 

所需的輸出

state year type value 
1 co 2000 year 6.0 
2 co 2001 year 5.3 

回答

2

也許

library(tidyverse) 
newdat %>% 
    group_by(state, year) %>% 
    summarise(
    value = ifelse(
     "year"%in%type, 
     value[type=="year"], 
     mean(value[type=="month"])), 
    type="year") 
# # A tibble: 2 x 4 
# # Groups: state [?] 
# state year value type 
# <fctr> <dbl> <dbl> <chr> 
# 1  co 2000 6.000000 year 
# 2  co 2001 5.333333 year 
+0

是啊,這做到了!謝謝! – Vedda

相關問題