2017-05-24 41 views
-1

我有一个data.table,并尝试基于组的第一次观察创建一个新变量,例如, :根据R/Rstudio中第一次观察组创建变量

ID, Month, Value 
    A Jan  5 
    A Feb  10 
    A Mar  7 
    B Feb  3 
    B Mar  6 

所需的输出:

ID, Month, Value First.Month 
    A Jan  5  Jan 
    A Feb  10  Jan 
    A Mar  7  Jan 
    B Feb  3  Feb 
    B Mar  6  Feb 

我在Rstudio工作,任何帮助表示赞赏提前

谢谢!

+0

欢迎SO。你能证明你所尝试过的吗? – KoenV

回答

1

随着data.table,我们可以通过“ID”和分配(:=)的“月”即“月[1L]”的第1元素组(1L只是一个整数表示,它可以被下降到1)来创建在 'First.Month'

library(data.table) 
dt[, First.Month := Month[1L], by = ID] 
dt 
# ID Month Value First.Month 
#1: A Jan  5   Jan 
#2: A Feb 10   Jan 
#3: A Mar  7   Jan 
#4: B Feb  3   Feb 
#5: B Mar  6   Feb 

注意:如果它不是一个data.table,转换为data.table第一

setDT(dt) 
+1

工作完美,谢谢你的答案和详细的解释 –