2017-02-15 28 views
0

,比如我有一個數據集,看起來這如何在R中使用過濾器/子集有異常?

print(x) 



Age Hometown  
22 New York 
24 Houston 
26 Ney York 
27 Chicago 
30 Washington 

問題,例如:人必須爲28年,但早於24歲以下,except人員故鄉是紐約。 問題的第一部分我會這樣回答

xnew <- subset(x, Age > 28 & Age < 24),但我該如何解決這個問題的第二部分?

+1

我的直覺是,你沒有正確地思考問題,除了不應該是一個編程術語。編程中的例外情況用於處理錯誤,如果家鄉是紐約,我懷疑這個問題是否希望腳本發出錯誤。但我可能是錯的。 – brittenb

+0

我的目標是第一行不會被踢出。解決方案應該是第1,3行和第4行 – Marre

+0

並且還要感謝您的幫助! – Marre

回答

1
xnew <- subset(x, Age > 28 & Age < 24 & Hometown != New York) 
+0

Akbar和R18謝謝,但此代碼不適合。我希望第一行保持不會消失 – Marre

0

大廈子集,請記住:

  • 如果你想有一個變量取一個特定值(例如, 「紐約」):

subset(x, Hometown=="New York")

  • 當你想要一個變量不採取具體的價值(例如「紐約」)

subset(x, Hometown!="New York")

重要:如果它是一個字符之間 「」 給定值,如果需要雙重的值相等(==),如果不希望(!=

0

的發言「該人必須年滿28歲但年齡超過24歲」,以下應爲代碼

xnew <- subset(x, Hometown == "New York" & Age < 28 & Age > 24) 
+0

非常感謝Anish,但如果我使用此代碼,行4也會消失。但是我希望第4排停留,因爲它處於「年齡規則」中。但我也希望第一排停留,因爲它在「家鄉規則」中。或者我只是困惑和忽略了一些東西? – Marre

+0

這會比 - > xnew < - subset(x,Hometown ==「New York」| Age < 28 & Age > 24) –

0

我不確定您的措詞,但它聽起來像李如果你想抓住年齡在24歲到28歲之間的行,除非家鄉是紐約,在這種情況下,無論年齡如何,都要抓住這一行。如果這是正確的,那麼你可以使用:

xnew <- subset(x, Age < 28 & Age > 24 | Hometown == "New York") 
1

如果我理解正確的話,你想大家誰是年齡超過24歲及以下的28 住在紐約,無論年齡大小。

xnew <- subset(x, Age > 24 & Age < 28 | Hometown == New York) 
+0

OMG,我只是一個.....。非常感謝!!!!這是我正在尋找的。 – Marre

+0

@docendodiscimus你說得對,我現在修好了。 – James