Subtraction within Groups using R

前端 未结 3 1954
盖世英雄少女心
盖世英雄少女心 2020-12-20 00:51

I have been struggling to find the best way to do this subtraction within groups. I have data frame containing a long list of samples (Sample), each one treate

3条回答
  •  庸人自扰
    2020-12-20 01:34

    Assuming your dataset is called dat, here's a couple of data.table solutions:

    Method 1:

    require(data.table) ## >= 1.9.2
    setDT(dat)[, dValue := value[condition == "A"] - value, by=Sample]
    

    Method 2:

    require(data.table) ## >= 1.9.2
    setkey(setDT(dat), Sample)
    dat[dat[condition == "A"], dValue := i.value-value]
    
    #    Sample condition value dValue
    # 1:   var1         A    12      0
    # 2:   var1         B    14     -2
    # 3:   var1         C    15     -3
    # 4:   var2         A    20      0
    # 5:   var2         B    19      1
    # 6:   var2         C    19      1
    # 7:   var3         A    50      0
    # 8:   var3         B    51     -1
    # 9:   var3         C    48      2
    

提交回复
热议问题