2010-08-10 54 views
40

我有一個很大的CSV與來自不同位置的醫療調查結果(該位置是數據中存在的一個因素)。由於某些分析是特定於某個位置併爲了方便起見,因此我想僅從這些位置提取僅有行的子幀。它發生的位置是第一個領域所以是的,我可以通過排序CSV行,但我想學習如何在R中做到這一點,因爲我確信我會需要這個爲其他列。如何基於涉及字段的條件提取數據框的子集?

所以,簡而言之,問題是:給定數據框foo,如何創建另一個數據框欄,其中只包含來自foo的行,其中foo $ location ='there'?

非常感謝。

回答

72

以下是兩種主要方法。我喜歡這一個可讀性:

bar <- subset(foo, location == "there") 

注意,您可以串在一起&|很多條件語句來創建複雜的子集。

第二個是索引方法。您可以使用數字或布爾切片在R中對行進行索引。 foo$location == "there"返回TF值的向量,其長度與foo的行長度相同。您可以這樣做,只返回條件返回true的行。

foo[foo$location == "there", ] 
+0

。@ JoFrhwld - 不是'subset()'不是首選方法嗎?詳細討論[這裏](https://stackoverflow.com/questions/9860090/why-is-better-than-subset) – 2017-08-09 16:56:28

+0

有沒有一種簡單的方法來訪問subset和foo減去子集?我想將我的數據分成條和(foo-bar)。顯然,我可以用!=來重複上面的內容,但有沒有一種方法? – schoon 2017-09-15 06:37:40

相關問題