2013-07-03 4 views
0

많은 변수가있는 데이터 프레임을 분할하고 싶습니다. 그 변수의 행 수가 다른 특정 변수로 그룹화하고 싶습니다. 2 : 3 : 4, 5, 6, 7데이터 프레임을 여러 행 크기로 그룹 나누기

y = data.frame(num = 1:4, sort_var = rep(c('hhh', 'jjj','iii','aaa'),4)) 
x = data.frame(num = 5:7, sort_var = rep(c('ddd', 'ccc','bbb'),2)) 

xy = rbind(x,y) 
xy = xy[order(xy$num),] 

I는 각 그룹 NUM 1 그룹핑에 의해 제조되는 NUM 컬럼에서 그룹을 확인하고자 다음은 재생 가능한 예는

감사합니다.

답변

1
> split(xy,(xy$num-1)%/%2) 
$`0` 
    num sort_var 
7 1  hhh 
11 1  hhh 
15 1  hhh 
19 1  hhh 
8 2  jjj 
12 2  jjj 
16 2  jjj 
20 2  jjj 

$`1` 
    num sort_var 
9 3  iii 
13 3  iii 
17 3  iii 
21 3  iii 
10 4  aaa 
14 4  aaa 
18 4  aaa 
22 4  aaa 

$`2` 
    num sort_var 
1 5  ddd 
4 5  ddd 
2 6  ccc 
5 6  ccc 

$`3` 
    num sort_var 
3 7  bbb 
6 7  bbb 
+0

너 자신을 능가했다. 너무 빨리 대답했기 때문에 아직 대답을 받아 들일 수 없습니다! – user1807096

0

사용이 : 나는 단순히 결과를 복제 각 그룹을 처리하는 기능 I를 사용했습니다

by(xy, as.integer((xy$num+1)/2), I) 

참고. 그러나 당신은 그것을 바꿀 수 있어야합니다.

+1

대신'split'을 사용하십시오. 나는 또한 as.integer가 필요하다고 생각하지 않는다. –

+0

as.integer가 필요합니다. 'by '를 사용하면 한 번에 하나의 청크를 처리하고 결과 만 저장할 수 있습니다. 'split'은 전체 데이터 프레임과 함께'list'를 반환합니다. –

+0

OP가 데이터 분할을 요청했습니다. –

0
library(car) 

sp <- recode(xy$num, "1:2=1; 3:4=2; 5:6=3; 7=4") 
split(xy, sp) 

$`1` 
    num sort_var 
7 1  hhh 
11 1  hhh 
15 1  hhh 
19 1  hhh 
8 2  jjj 
12 2  jjj 
16 2  jjj 
20 2  jjj 

$`2` 
    num sort_var 
9 3  iii 
13 3  iii 
17 3  iii 
21 3  iii 
10 4  aaa 
14 4  aaa 
18 4  aaa 
22 4  aaa 

$`3` 
    num sort_var 
1 5  ddd 
4 5  ddd 
2 6  ccc 
5 6  ccc 

$`4` 
    num sort_var 
3 7  bbb 
6 7  bbb 
관련 문제