根据数据框中的特定条件提供唯一的ID号

时间:2016-02-23 01:51:31

标签: r dataframe data.table

我想根据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中执行此操作的帮助。

2 个答案:

答案 0 :(得分:3)

这是.GRPdata.table变量的要点,请参阅?data.table

  

.GRPinteger,长度为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