首页 > 解决方案 > 组的R DataTable商

问题描述

data1=data.frame("Group"=c(1,1,2,2,3,3,4,4),
"Class"=c(0,1,0,1,0,1,0,1),
"Score"=c(6,7,7,4,8,8,3,4),
"Q"=c(0.857142857,0.857142857,1.75,1.75,1,1,0.75,0.75))

我有除“Q”列之外的所有数据。为了达到“Q”,我将每个组的第 0 类分数除以第 1 类分数。我希望生成列'Q'并将其添加到data1。

标签: rdata.table

解决方案


我们可以通过多种方式做到这一点(假设每个组的“分数”中只有一个值 0 和 1,做一个比较运算符并将每个“类”对应的“分数”子集

library(data.table)
setDT(data1)[,  Q1 := Score[Class == 0]/Score[Class == 1] , Group]

或者另一种选择是order并划分第一个/最后一个

setDT(data1)[order(Group, Class), Q1 = first(Score)/last(Score), Group]

推荐阅读