2013-10-11 74 views
24

我的數據是這樣(舉例來說):分流/子集由因素的數據幀中的一列

ID Rate State 
1 24 AL 
2 35 MN 
3 46 FL 
4 34 AL 
5 78 MN 
6 99 FL 

數據:

structure(list(ID = 1:6, Rate = c(24L, 35L, 46L, 34L, 78L, 99L), 
       State = structure(c(1L, 3L, 2L, 1L, 3L, 2L), 
           .Label = c("AL","FL", "MN"), 
           class = "factor")), 
      .Names = c("ID", "Rate", "State"), 
      class = "data.frame", row.names = c(NA, -6L)) 

我想要分割由國家和我的數據想要得到3個數據集如下:

data set 1 
ID Rate State 
1 24 AL 
4 34 AL 
data set 2 
ID Rate State 
2 35 MN 
5 78 MN 
data set 3 
ID Rate State 
3 46 FL 
6 99 FL 

我應該使用什麼函數?

我在想分割或子集功能,但還沒有線索呢。

+8

如果你考慮'split'函數,爲什麼不嘗試它? – juba

+0

嗨!在問你的問題之前,請徹底搜索答案。還請閱讀[this](http://stackoverflow.com/help/on-topic):「提出問題的問題必須表明對所解決問題的最小理解,包括嘗試解決方案,爲什麼他們不工作,以及預期的結果。「這就是說,歡迎來到SO!乾杯。 – Henrik

+6

其實我試過拆分功能,但我得到的是一個列表。我不確定自己是在正確的軌道上,還是有一些我不知道的功能,這就是我問的原因。請不要認爲我沒有付出任何努力,只是在開始時拋出問題。另外,我的實際數據比例子要複雜得多,我很難檢查它是否正確。我很欣賞你的評論,但對初學者更寬容一點,將不勝感激。 – titi

回答

42

我們可以使用split

mylist <- split(df, df$State) 

mylist 
$AL 
    ID Rate State 
1 1 24 AL 
4 4 34 AL 

$FL 
    ID Rate State 
3 3 46 FL 
6 6 99 FL 

$MN 
    ID Rate State 
2 2 35 MN 
5 5 78 MN 

要訪問的元素個數:

mylist[[1]] 

或名稱:

mylist$AL 
    ID Rate State 
1 1 24 AL 
4 4 34 AL 

?split

說明

分割將在所述的矢量X到由˚F定義的基團中的數據。 替換表格替換了對應於這樣一個部門的值。非分裂逆轉分裂的影響。

+0

這有助於我感謝 – cloudscomputes