2017-06-26 16 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

関連する問題