2014-10-08 93 views
0

我有一個很大的數據框,我想在其中以五個組爲單位任意分組所有行。如何在r數據框中以編程方式進行分組變量

我的數據框的一部分可能看起來像像這樣:

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 

但我需要的是這樣的:

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 

我試圖用一個for循環,但結果卻是重複數到5。這不是我打算的。前五行必須出現在第一組中,而不是第一排在五個之後。

有沒有人有關如何解決這個問題的想法?最受歡迎的!

回答

1

你可以試試:

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

謝謝!這一個工作馬上 – rdatasculptor 2014-10-08 10:51:04

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 2014-10-08 10:50:49

+1

哦,是的,我忘了指定輸出的長度(否則它會給出比'd'行多的條目) – konvas 2014-10-08 10:57:06

相關問題