我想根据df中的某些条件在数据框(df)中提供唯一的ID号。我的df看起来像这样:
dfin <-
STUDY DRUG FED DOSE TIME CONC
4 0 1 50 2 10
4 0 1 60 4 25
5 1 1 10 5 20
12 0 0 50 2 10
等等。我想为STUDY, DRUG, FED, DOSE
的每个唯一组合添加唯一的ID号。上面的输出应该是这样的:
dfout <-
STUDY DRUG FED DOSE TIME CONC ID
4 0 1 50 2 10 1
4 0 1 60 4 25 2
5 1 1 10 5 20 3
5 1 0 10 5 25 4
12 0 0 50 2 10 5
我需要有关如何在R中执行此操作的帮助。
答案 0 :(得分:3)
这是.GRP
中data.table
变量的要点,请参阅?data.table
:
.GRP
是integer
,长度为1,包含一个简单的组计数器。第1组为1,第2组为2,等等。
用法:
library(data.table)
setDT(dfin)[ , ID := .GRP, by = .(STUDY, DRUG, FED, DOSE)]
当您标记问题时,您还不清楚data.table
是否已被记住;如果是这种情况,请参阅Getting Started教程。
答案 1 :(得分:1)
使用dplyr
,我们可以使用group_indices_
library(dplyr)
dfin %>%
mutate(ID= group_indices_(.,
.dots= c("STUDY", "DRUG", "FED", "DOSE")))
# STUDY DRUG FED DOSE TIME CONC ID
#1 4 0 1 50 2 10 1
#2 4 0 1 60 4 25 2
#3 5 1 1 10 5 20 3
#4 12 0 0 50 2 10 4