4

私は、はるかに大きなデータフレームの一部を持っています:

[7111,] 20100321  0.8000000  
[7112,] 20100321  0.1000000  
[7113,] 20100322  0.3000000  
[7114,] 20100324  0.4000000  
[7115,] 20100324  0.2000000  
[7116,] 20100325  0.4000000  
[7117,] 20100326  0.7000000  
[7118,] 20100327  0.4000000 
[7119,] 20100328  0.1000000  
[7120,] 20100328  0.9000000  
[7121,] 20100328  0.2000000   
[7122,] 20100329  0.7000000  

最初の列には日付が含まれ、2 番目の列には測定が行われた日付の時刻が含まれます (例: 0.0 = 00:00 時間および 0.5 = 12:00 時間)。ご覧のとおり、一部の日付には複数の測​​定値があります。

これが私がやりたいことです: 日付ごとの時間データを特定の日の低いものから高いものに並べ替え、この順序に従って数字を追加したい (1 が最も早い測定値で、その後は 2...3 など)。次のようなものを取得します。

[7111,] 20100321  0.1000000    1  
[7112,] 20100321  0.8000000    2
[7113,] 20100322  0.3000000    1
[7114,] 20100324  0.2000000    1
[7115,] 20100324  0.4000000    2
[7116,] 20100325  0.4000000    1
[7117,] 20100326  0.7000000    2
[7118,] 20100327  0.4000000    1
[7119,] 20100328  0.1000000    1
[7120,] 20100328  0.2000000    2
[7121,] 20100328  0.9000000    3
[7122,] 20100329  0.7000000    1

誰もこれを行う方法を知っていますか? 助けてください!

4

2 に答える 2

4

を使用して、3 番目の列を非常に迅速に作成できorderます。data.frameave

df <- df [ order( df$V1 , df$V2 ) , ]
df$ID <- ave( df$V2 , df$V1 , FUN = function(x) 1:length(x) )
#        V1  V2 ID
#2  20100321 0.1  1
#1  20100321 0.8  2
#3  20100322 0.3  1
#5  20100324 0.2  1
#4  20100324 0.4  2
#6  20100325 0.4  1
#7  20100326 0.7  1
#8  20100327 0.4  1
#9  20100328 0.1  1
#11 20100328 0.2  2
#10 20100328 0.9  3
#12 20100329 0.7  1

aveデータフレームのサブセットを取得し、1 から現在のサブセットnrow(x)までの各サブセットのベクトルを返します。xそれらを 1 つの長いベクトルとして返し、それを にアタッチしてから、私の例でdata.frameは日付列で並べ替え、次に列で並べ替えます。V1ID

于 2013-05-10T14:54:31.203 に答える