2014-03-06 72 views
1

我有一個名爲「row」,「col」和「time」的數據框。 行具有從A到H的值,Col具有從1到12的值。時間具有「5,10,15,20,25,30」的值。提取R中某些條件的行

所以,我想製作不同的數據幀或包含相同行數&列但不同時間的向量組。因此,最終會有96個不同的數據框或向量組具有匹配的行和列,但時間和活動的值不同。

下面是我的數據集的一個示例。

 row col time activity day 
1  A 1 5  33 1 
2  B 1 5  36 1 
3  C 1 5  53 1 
4  D 1 5  40 1 
5  E 1 5  91 1 
6  F 1 5  80 1 
7  G 1 5  89 1 
8  H 1 5  82 1 
97 A 1 10  38 1 
98 B 1 10  92 1 
99 C 1 10  47 1 
100 D 1 10  57 1 
101 E 1 10  84 1 
102 F 1 10  85 1 
103 G 1 10  96 1 

下面是我想什麼樣...

 row col time activity day 
1  A 1 5  33 1 
2  A 1 10  38 1 
3  A 1 15  66 1 

等等等等

謝謝〜

+0

請看到一些有用的方法[這裏](HTTP:// stackoverflow.com/questions/22232009/error-using-select-function-in-r/22232450#22232450),更詳盡地說,[這裏](http://stackoverflow.com/questions/5805271/subset-a-data -frame-based-column-entry-or-rank/5820329)# –

+0

@PauloCardoso,我不確定這些帖子是否可以解決這個問題,儘管我很可能誤解了OP。請參閱我的解答。 – BrodieG

+0

我認爲討論[這裏](http://stackoverflow.com/q/3505701/892313)更相關;在這種情況下,hj14只是詢問split-apply-combine的拆分部分。但是,我懷疑這只是應用和合並的前奏,因此整個語料庫都是相關的。否則,相關部件可以拔出。 –

回答

2

如果我理解正確的話,你想你的數據幀分成子數據幀,其中每個子數據幀具有相同的rowsCol值。你可以用split做到這一點:

df.split <- with(df, split(df, list(rows, Col))) 
head(df.split, 3) # showing 3 of 96 sub data frames 

主要生產

$A.1 
    rows Col time activity 
1  A 1 5  26 
97  A 1 10  91 
193 A 1 15  25 
289 A 1 20  2 
385 A 1 25  95 
481 A 1 30  35 

$B.1 
    rows Col time activity 
2  B 1 5  64 
98  B 1 10  71 
194 B 1 15  72 
290 B 1 20  45 
386 B 1 25  52 
482 B 1 30  43 

$C.1 
    rows Col time activity 
3  C 1 5  49 
99  C 1 10  27 
195 C 1 15  35 
291 C 1 20  16 
387 C 1 25  9 
483 C 1 30  94 

這裏是我使用的玩具數據:

rows <- LETTERS[1:8] 
Col <- 1:12 
time <- (1:6) * 5 
df <- expand.grid(rows=rows, Col=Col, time=time) 
df$activity <- sample(1:100, nrow(df), rep=T) 
+0

這很好。謝謝。 我想知道如何命名每個圖形的名稱與每個數據框的名稱。所以就像第一張名爲「A.1」的圖和第二張圖以及「B.1」等 – hj14

+0

@ hj14,我還不清楚如果您仍然在想如何命名這些圖或者是否已經回答了爲你。此外,如果這回答您的原始問題,請考慮將其標記爲已回答。謝謝。 – BrodieG

+0

對不起,我想知道如何命名圖表.. – hj14