2017-11-26 10 views
0

年、月、日で天気データをタグ付けしました。2つのレベルでグループ化された変数の数の抽出

Date   MinT  Year Month 
1976-01-01 1.1  1976 1 
1976-01-02 0.3  1976 1 
1976-01-03 1.3  1976 1 

データの実行回数は、すべての月間で1976:2016です。このTestDataを呼び出します。

私ができるグループおよびサブセット次のように(それは非常に不格好ですが、私は各ステップをテストしようとしているので、それはある)

temp1 <- TestData %>% 
    group_by(Year) 
temp2 <- temp1 %>% 
    subset(between(Month, 1, 3)) 
temp3 <- temp2 
v1 <- replace(temp3$minT, temp3$minT >-2.0,0) ### replaces data above the threshold 
temp3["v1"] <- v1 
index1 <- with(temp3, tapply(X = v1, INDEX = Year, FUN = sum)) ##  sums the month 1-3-2 degree values 
index2 <- with(temp3, tapply(X = v1, INDEX = Year, FUN = length)) ## counts the number of items in each year for the selected period. 

index2は私に、各月の日数のカウントを提供します。 index1と2を使用して、「月の天気」のインデックスを作成できます。

私が望むのは、-2以下の日のカウントを得ることができるため、毎月の匹敵する重大度の指標を得ることです。

私はインスタンスをカウントするrleを使用する場合、いくつかの数ヶ月はゼロインスタンスを持つことになりますのでv1割り当てが必要であり、彼らはminTに対するインデックスのコンパイル済みのテーブルを意味し、最終的な集計から落下、yearmonthた異なる長さのインデックスベクトルを持っていますRは好きではありません。私はindex2割り当ての中でFUNとしてrleを試しましたが、それは日のカウントに達することができませんでした。その割り当て内の長さの範囲値(index3)も同様です。

年ごとにミニテーブルを生成するのが短く、私は立ち往生しています。誰にも何か提案はありますか?

答えて

0

summariseがお探しの関数だと思います。

library(latticeExtra) 

threshold <- 40 

SeatacWeather %>% 
    group_by(year, month) %>% 
    filter(min.temp < threshold) %>% 
    summarise(days_below_threshold = n()) 
+0

私はこのデータを次のようにしようとしています: "group_by_ 'の適用可能なメソッドはありません" c'( 'double'、 'numeric' ) " – BobA

+0

' TestData $ Year < - factor(TestData $ Year) 'を試してみてください。そうでなければ、より多くの情報が必要でしょう。 – Birger

+0

ありがとうございました! temp1にデータフレームを宣言すると、group_byが動作するようになりました!しきい値フィルタセグメントで日が生成されました。 – BobA

関連する問題