2015-04-23 53 views
2

我需要對R中的數據集中的每個x個觀察值(行)進行分組和標記。
我需要知道數據集中最後一組行的數目是否小於x觀測值數據框中的數據組中的行和標籤行R

例如: 如果我使用一個包含10個觀察值和2個變量的數據集,並且我想按每3行進行分組。 我想添加一個新列,這樣的數據集是這樣的:

speed  dist  newcol 
     4  2   1 
     4  10   1 
     7  4   1 
     7  22   2 
     8  16   2 
     9  10   2 
     10  18   3 
     10  26   3 
     10  34   3 
     11  17   4 
+3

我不明白你想要什麼,請給我們一些輸入數據,你只是想要:'df $ group < - c(rep(1:3,each = 3),4)' – grrgrrbla

+0

@grrgrrbla,如果'data.frame'行數不能被「3」分割。一個正確的解決方案是'rep(1:ceiling(nrow(df)/ 3),每個= 3)[1:nrow(df)]' –

+0

我知道,這不是解決方案,但我沒有輸入數據甚至不明白他想要什麼,所以我試圖通過給出一個非常簡單的解決方案來獲得更多信息,並詢問這是否是方向 – grrgrrbla

回答

1

假設你的數據是df你可以做

df$newcol = rep(1:ceiling(nrow(df)/3), each = 3)[1:nrow(df)] 
+1

是的!謝謝!雖然在最終分組中不到3的時候沒有通知。你會知道如何讓它回來嗎? – user4824195

+0

它保持由'rep'函數形成的向量的第一個'nrow(df)'。 –

2
df$group <- rep(1:(nrow(df)/3), each = 3) 

這工作,如果行數是確切的倍數3.每三行將得到序列號的標籤。

一個快速骯髒的方式來解決,不知道最後一組是如何不完整的簡單檢查的問題時nrow是模數由組大小劃分依然存在:nrow(df) %% 3 #change the divisor to your group size

相關問題