2017-08-03 46 views
1

在每組數據之前插入一行這可能是一個愚蠢的問題。但是我想在每組數據之前插入一個角色。我可以在網上找到的是如何在每組之後插入一行。另外,插入的行將具有代表每個ID的序列號。 例如,我有一個像使用data.table

df 
ID  TIME VAR VALUE 
101  07/02 V1  9 
101  07/03 V2  NA 
101  07/03 V3  10 
221  06/01 V1  2 
221  07/03 V2  4 

數據表我想是這樣的:

ID  TIME VAR  VALUE 
101  NA sequence 1 
101  07/02 V1  9 
101  07/03 V2  NA 
101  07/03 V3  10 
221  NA sequence 2 
221  06/01 V1  2 
221  07/03 V2  4 

真正的表有14,000唯一的ID約14百萬行。有沒有快速更新表格的方法?謝謝!

+3

'DF [((write_your_tuple_here),.SD),rbind,通過= ID]'?沒有辦法在沒有創建新表的情況下更新表來添加/刪除行。 https://stackoverflow.com/q/10790204/在你的情況下,它看起來像你在一張寬大的桌子上使用了「融化」。如果是這樣,在融化之前添加該格式的額外列可能會更容易。 – Frank

+0

嗨,弗蘭克,第一個選項不行,或者我可能把錯誤的東西放在裏面(write_your_tuple_here)。對於熔體和額外的色譜柱,我不確定它會如何下降。你可以解釋一下嗎?謝謝! – VeraShao

+1

嗯,不確定。是否每個ID都有一行V1,一個是V2,一個是V3?我的意思是。(TIME = NA_character_,VAR =「sequence」,VALUE = .GRP)'作爲你的元組,或者插入行的規則。 (.GRP是序列號,參見'?.GRP'。) – Frank

回答

0

可能是因爲它在大部分rbind更快:

> tbl[, .SD 
     ][, .N, ID 
     ][, VALUE := .I 
     ][, VAR := 'sequence' 
     ][, N := NULL 
     ][, rbind(.SD, tbl, fill=T) 
     ][order(ID, VAR != 'sequence', TIME) 
     ][, .(ID, TIME, VAR, VALUE) 
     ] 

    ID TIME  VAR VALUE 
1: 101 NA sequence  1 
2: 101 07/02  V1  9 
3: 101 07/03  V2 NA 
4: 101 07/03  V3 10 
5: 221 NA sequence  2 
6: 221 06/01  V1  2 
7: 221 07/03  V2  4 
>