1
我正在尋找在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語句應該一定風向範圍內計數的記錄的數量,例如說>=120°
和<135°
和一定的風速範圍內,在本例>=3m/s
和<15m/s
。然後將計數轉換爲所採用測量總數的百分比,所以上面的例子應該等於6 = 16.66%中的1個記錄。然後百分比被記錄到另一個data.frame(數據),其結構爲:
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%(本例中的做法,但不是我運行我的腳本超過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
'['和'$'子集的奇組合。例如'[我,「h_cnt」]'有什麼問題?什麼是錯誤的結果和預期的結果,你的數據是什麼樣的。可重複的例子? –
除了Gavin提到的子集劃分之外,你的語法看起來像是有效的R.如果你在開始之前創建另一個數據集w_data_3_15 <子集(w_data,windspeed> = 3&windspeed <15)',你的代碼將更快更乾淨循環。 –
@Gavin我添加了更多信息 – klonq