我有一个数据框,例如:
[remoteOperations]="true"
我要分配第三个变量newvar,如下所示:
df <- data.frame(Group = c('a', 'a', 'b', 'a', 'b', 'b', 'a', 'b'),
ID = c(paste0('x', c('1', '2', '2', '3', '4', '5', '6', '6')))
对于每个ID,它可能会出现一次或两次。如果它出现在组a中,则包含a的行将被分配为“第一”。如果出现,并且组a和b出现,则将a分配为“第一个”,将b分配为“第二个”。如果仅出现在b中而不出现在a中,则将newvar分配为“ first”。我该如何编写将newvar这样分配的代码?
答案 0 :(得分:1)
使用data.table
的解决方案如何:
library(data.table)
setDT(df)
df[, newvar := c('first', 'second')[seq_len(.N)], by = .(ID)]
df
Group ID newvar
1: a x1 first
2: a x2 first
3: b x2 second
4: a x3 first
5: b x4 first
6: b x5 first
7: a x6 first
8: b x6 second