2014-10-08 2 views
0

모든 그룹을 임의로 5 개 그룹으로 그룹화하려는 대형 데이터 프레임이 있습니다.r 데이터 프레임에서 프로그래밍 방식으로 그룹화 변수를 작성하는 방법

내 데이터 프레임의 일부가 될 수 있습니다. 같은 :

index group 
1  1  1 
2  2  1 
3  3  1 
4  4  1 
5  5  1 
6  6  2 
7  7  2 
8  8  2 
9  9  2 
10 10  2 
11 11  3 
12 12  3 
13 13  3 
14 14  3 
15 15  3 
16 16  4 
17 17  4 
18 18  4 
19 19  4 
20 20  4 
21 21  5 
22 22  5 

내가 루프를 사용하려고했으나 결과는 다섯 반복 계산이었다

structure(list(index = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22), group = c(1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = c("index", 
"group"), row.names = c(NA, 22L), class = "data.frame") 

    index group 
1  1  1 
2  2  1 
3  3  1 
4  4  1 
5  5  1 
6  6  1 
7  7  1 
8  8  1 
9  9  1 
10 10  1 
11 11  1 
12 12  1 
13 13  1 
14 14  1 
15 15  1 
16 16  1 
17 17  1 
18 18  1 
19 19  1 
20 20  1 
21 21  1 
22 22  1 

는하지만 제가 필요한 것은 무엇인가 같다. 그리고 그건 내가 의도 한 것이 아니었다. 처음 5 개의 행은 그룹 1에 나타나야하며 5로 계산 된 후 모든 첫 번째 행에 나타나지 않아야합니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 대환영!

답변

1

당신이 시도 할 수 :

df$group<-((1:nrow(df)-1) %/% 5)+1 
+0

감사합니다! 이 사람은 바로 대답했습니다. – rdatasculptor

1

하는의는 데이터 프레임이 d입니다 가정 해 봅시다. 그럼 그렇지 않은 경우.

d$group <- rep(1:(nrow(d)/5), each = 5) 

가 (물론 d의 행의 수를 5로 나눌 수 있어야하거나 이해가되지 않습니다해야하고, 마지막 항목 미만을 5 회 반복하려면, rep(1:ceiling(nrow(d)/5), each = 5, length.out = nrow(d)) 시도)

+0

감사합니다. 당신은 내가 마지막 항목을 5 번 이하로 반복하기를 바랐다. ceiling()을 사용하여 솔루션이 작동하지 않거나 적어도 작동하게 만들 수 없습니다. – rdatasculptor

+1

오, 예, 출력 길이를 지정하는 것을 잊었습니다 (그렇지 않으면 'd'행보다 많은 항목이 제공됩니다). – konvas

관련 문제