2013-01-02 55 views
0

我有一個稱爲「輸入」的大型數據集。數據集中的一列是標有「Y」或「N」的「約束」標誌。我想創建兩個數據集,其中一個是標記爲「Y」的行,另一個是標記爲「N」的行。使用ifelse有條件地拆分數據幀

我嘗試:

ifelse(inputs$constrained == "N",unconstrained <- inputs,constrained <- inputs) 

但兩個數據集無約束和約束是相同的輸入。

我在做什麼錯?

+0

'ifelse'旨在返回一個向量。你不能將它用作你正在嘗試的編程構造。可以證明你的構造應該引發錯誤。 –

回答

4
first <- split(inputs, inputs$constrained)[1] 
second <- split(inputs, inputs$constrained)[2] 

如果你想使用「[」你可以這樣做:

unconstrd <- inputs[ inputs$constrained == "N" , ] 
constrd <- inputs[ ! inputs$constrained == "N" , ] 

無論是第二個選項可能有其中「約束」的條目是NA,由於是R處理NA的扭曲方式條件,儘管它不會忠實反映這些行。 (我承認我確實不知道該怎麼分割方法不具有NA的。)我只是測試拆分方法,它可能是優越的,因爲(如subset)它不會返回is.na(input$constrained)行。