2014-03-06 63 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