Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个R函数用于按一个变量(列)对数据进行分组?_R_Grouping - Fatal编程技术网

是否有一个R函数用于按一个变量(列)对数据进行分组?

是否有一个R函数用于按一个变量(列)对数据进行分组?,r,grouping,R,Grouping,我测量了细菌对病毒的抑制能力。我有n行和4列a,b,c,x的数据矩阵。根据第x列,我想将它们定义为好的或坏的inhibators。但是,我不知道如何根据其他测量的a、b、c列来放置x列的树型。是否有任何R函数可以分离/分组我的数据帧?在dplyr逻辑中有group_by,它的工作原理如下: 图书馆弹琴 df%>% group_byA%>%df现在按列A分组 summariseMean=meanC计算每组A的C平均值,summarise将删除未汇总的任何其他列,并仅显示不同的行 df%>% 组_b

我测量了细菌对病毒的抑制能力。我有n行和4列a,b,c,x的数据矩阵。根据第x列,我想将它们定义为好的或坏的inhibators。但是,我不知道如何根据其他测量的a、b、c列来放置x列的树型。是否有任何R函数可以分离/分组我的数据帧?

在dplyr逻辑中有group_by,它的工作原理如下:

图书馆弹琴 df%>% group_byA%>%df现在按列A分组 summariseMean=meanC计算每组A的C平均值,summarise将删除未汇总的任何其他列,并仅显示不同的行 df%>% 组_byA%>% mutateMean=meanC这将在不更改数据帧的情况下将分组平均值添加到每一行
如果您进行了总结,那么您就完成了,但在分组和变异之后,您必须在某个点取消数据框的分组。

数据。下表示例。在数据中,我们对5组进行了50次观察

资料

例1

首先,我们可以计算a的组平均值,如果高于0.5,则将其标记为“好”,如果低于0.5,则将其标记为“坏”。请注意,此摘要不包括

dt1 = dt[, .(Mean = mean(a)), keyby = Group][, Label := ifelse(Mean > 0.5, 'Good', 'Bad')]

> dt1
   Group      Mean Label
1:     A 0.2982229   Bad
2:     B 0.4102181   Bad
3:     C 0.6201973  Good
4:     D 0.4841881   Bad
5:     E 0.4443718   Bad
例2

与Fnguyen的回答类似,以下代码不会总结每组的数据;它只会在每个观察点旁边显示组平均值和标签

dt2 = dt[, Mean := mean(a), by = Group][, Label := ifelse(Mean > 0.5, 'Good', 'Bad')]

> head(dt2)
           a Group      Mean Label
1: 0.4253110     E 0.4443718   Bad
2: 0.4217955     A 0.2982229   Bad
3: 0.7389260     E 0.4443718   Bad
4: 0.2499628     E 0.4443718   Bad
5: 0.3807705     C 0.6201973  Good
6: 0.2841950     E 0.4443718   Bad
例3

最后,我们当然可以应用一个条件参数来创建一个新列,而无需事先计算分组变量。以下示例测试a列和b列上的组合条件

dt3 = data.table(a = runif(100), b = runif(100))

dt3[, abGrThan0.5 := ifelse((a > 0.5 & b > 0.5), TRUE, FALSE)]

> head(dt3)
           a          b abGrThan0.5
1: 0.5132690 0.02104807       FALSE
2: 0.8466798 0.96845916        TRUE
3: 0.5776331 0.79215074        TRUE
4: 0.9740055 0.59381244        TRUE
5: 0.4311248 0.07473373       FALSE
6: 0.2547600 0.09513784       FALSE
dt3 = data.table(a = runif(100), b = runif(100))

dt3[, abGrThan0.5 := ifelse((a > 0.5 & b > 0.5), TRUE, FALSE)]

> head(dt3)
           a          b abGrThan0.5
1: 0.5132690 0.02104807       FALSE
2: 0.8466798 0.96845916        TRUE
3: 0.5776331 0.79215074        TRUE
4: 0.9740055 0.59381244        TRUE
5: 0.4311248 0.07473373       FALSE
6: 0.2547600 0.09513784       FALSE