私はRでデータフレームのサブセットを探しています。私の構文は明らかに間違っています(間違った結果を出す)。複数の条件でデータフレームをフィルタリングする
data[i,]$m_cnt <- nrow(w_data[
w_data$direction >= data[i,]$min_a &
w_data$direction < data[i,]$max_a &
w_data$windspeed >= 3 &
w_data$windspeed < 15,
])/records;
同様の質問:Filtering a data.frame
w_dataのdata.frame(簡潔にするために簡略化)は、風速と風向の時系列データから成ります。
time_stamp windspeed direction
2010-06-01 00:00 12.2 125
2010-06-03 02:50 17.4 312
2010-06-05 21:30 2.1 132
2010-06-12 15:10 7.8 71
2010-06-22 17:40 2.6 307
2010-06-30 03:20 5.1 310
上記Rステートメントはこの例>=3m/s
と<15m/s
に、インスタンス>=120°
と<135°
および特定の風速範囲内で言う、特定の風向範囲内のレコードの数をカウントすることになっています。カウントは、測定の合計数のパーセンテージに変換されるので、上記の例は、6 = 16.66%のうちの1レコードに等しくなければなりません。
min_a max_a l_cnt m_cnt h_cnt
0 15 0 0 0
15 30 0 0 0
30 45 0 0 0
45 60 0 0 0
60 75 0 0.1666 0
75 90 0 0 0
90 105 0 0 0
105 120 0 0 0
120 135 0.1666 0.1666 0
135 150 0 0 0
150 165 0 0 0
165 180 0 0 0
180 195 0 0 0
195 210 0 0 0
210 225 0 0 0
225 240 0 0 0
240 255 0 0 0
255 270 0 0 0
270 285 0 0 0
285 300 0 0 0
300 315 0.1666 0.1666 0.1666
315 330 0 0 0
330 345 0 0 0
345 360 0 0 0
私が経験しています問題は、(この例では、私が行いますが、すべてではないパーセンテージの合計が100%に等しくないということです:割合は、その後の構造を持つ別のdata.frame(データ)に記録されています私のスクリプトを10,000以上のレコードで実行する)。
data[i,]$l_cnt <- nrow(w_data[
w_data$direction >= data[i,]$min_a &
w_data$direction < data[i,]$max_a &
w_data$windspeed <= 3,
])/records;
data[i,]$m_cnt <- nrow(w_data[
w_data$direction >= data[i,]$min_a &
w_data$direction < data[i,]$max_a &
w_data$windspeed <= 15,
])/records;
data[i,]$h_cnt <- nrow(w_data[
w_data$direction >= data[i,]$min_a &
w_data$direction < data[i,]$max_a &
w_data$windspeed > 15,
])/records;
は、の合計生成されます:
l_cnt 0,360637343
m_cnt 0,187836625
h_cnt 0,811938959
total 1,360412926
をしかし、私はすなわち、より少ないより大きくでm_cnt計算を修飾する場合
は私のような奇妙な結果を、また経験しています:
data[i,]$m_cnt <- nrow(w_data[
w_data$direction >= data[i,]$min_a &
w_data$direction < data[i,]$max_a &
w_data$windspeed >= 3 &
w_data$windspeed < 15,
])/records;
私は:
l_cnt 0
m_cnt 0,360637343
h_cnt 0,811938959
total 1,172576302
奇数ミックス。 '[i、" h_cnt "]'の何が間違っていますか?間違った結果と期待される結果は何ですか、あなたのデータはどのように見えますか?再現可能な例? –
Gavinが言及したサブセットの特徴は別として、構文は有効なRのように見えます。開始する前に別のデータセット 'w_data_3_15 < - subset(w_data、windspeed> 3&windspeed <15)を作成すると、ルーピング。 –
@ギャビン私はさらに詳しい情報を追加しました – klonq