2017-11-19 11 views
1

私は2つのデータセットを持っています。最初のものは、週にデング症例の数を示しています。ここで、データセットの最初の行である:毎日のデータから週平均を取得してマージする

season season_week week_start_date denv1_cases denv2_cases denv3_cases denv4_cases 
1 1990/1991   1  1990-04-30   0   0   0   0 
2 1990/1991   2  1990-05-07   0   0   0   0 
3 1990/1991   3  1990-05-14   0   0   0   0 
4 1990/1991   4  1990-05-21   0   0   0   0 
5 1990/1991   5  1990-05-28   0   0   0   0 
6 1990/1991   6  1990-06-04   1   0   0   0 
    other_positive_cases additional_cases total_cases 
1     4    0   4 
2     5    0   5 
3     4    0   4 
4     3    0   3 
5     6    0   6 
6     1    0   2 

2番目の列は、デング熱シーズンの週番号を示し、第3列は、その週の開始日を示します。気象データを含む別のデータセットがあります。ここでは、データセットの最初の行です:

TMAX TMIN TAVG TDTR PRCP  date 
1 26.7 20.6 23.7 6.1 1.3 1956-01-01 
2 25.6 21.1 23.4 4.5 20.8 1956-01-02 
3 26.7 21.7 24.2 5.0 1.8 1956-01-03 
4 26.7 19.4 23.0 7.3 0.0 1956-01-04 
5 27.8 17.2 22.5 10.6 0.0 1956-01-05 
6 26.1 21.1 23.6 5.0 0.3 1956-01-06 

私は、毎日のすべての行の平均で毎週ビューにこのデータセットを変換し、デング熱症例データセットをマージします。しかし、私は毎日のデータを毎週に変換する方法を見つけることができません。これを解決するには?

答えて

1

私はあなたの最初のデータセットのあなたの毎週の開始日が日曜日であると仮定しています。その仮定を考えると、我々はlubridate

require(lubridate) 
require(dplyr) 

df2 <- df2 %>% 
    mutate(date = floor_date(ymd(date), unit = "weeks")) %>% 
    group_by(date) %>% 
    summarise_all(.funs = mean) 

(脇日から)すべての列が数値であることを確認したパッケージからfloor_dateを使用することができます。

次に、あなたが戻ってDF1にそれに参加する自由です:

df3 <- d1 %>% 
    left_join(df2, by = c("week_start_date" = "date")) 

は、この情報がお役に立てば幸い!

+0

回答ありがとうございます。私は最初のコードスニペットを試しました。しかし、それは以下のようなエラーを表示します:
'mutate(date = floor_date(ymd(date)、unit =" weeks "))asas.character(x)のエラー: タイプ 'closure'をUseMethodで型 '文字' > GROUP_BY(日) エラー( "group_by_"): 'group_by_' の該当メソッドがクラス "機能" のオブジェクトに適用されませんtbl_varsで > summarise_all(.funsの=の意味) エラー(x):引数 ".tbl"が不足しています。既定値はありません。
私はエラーを解決しようとしましたが、Rで新しくなったので解決できませんでした。 –

+0

'require(dplyr)'あなたは '%>%'演算子のためにそれを必要とします。私は 'class(df2 $ date)'を実行します。ここで 'df2'はあなたの2番目のデータフレームです。それを「日付」形式に変換しようとする前に、その文字が「文字」であることを確認する必要があります。 –

+0

ありがとうございました。それはうまくいく。 –

関連する問題