在一行上创建一个组条件

时间:2016-02-01 10:43:43

标签: r

我正在尝试在符合特定行条件的数据框中保留/拆分组; data.frame看起来像:

COW   PARITY    DFC    ABCS
1        1       1      0.5
1        1       2        1
1        1       3     0.25
1        2       1     -0.3
1        2       2      0.5

我想创建具有相同值COW和奇偶校验

的组
ABCS>0 for DFC==1 

我尝试使用group_by + filter,但我无法正确分割。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用逻辑子集,如下所示:

df1[df1$COW==df1$PARITY & df1$ABCS>0 & df1$DFC==1,]
#  COW PARITY DFC ABCS
#1   1      1   1  0.5

这考虑了三个与逻辑AND(&)相关的条件。首先,COWPARITY的值应相等,然后ABCS的值应大于0,最后DFC的值应等于1 。在上面发布的示例中,只有一个观察(行)满足这三个条件。

修改

根据@docendodiscimus的建议,可以使用with()缩短命令并使其更清晰,例如:{/ p>

df1[with(df1,COW==PARITY & ABCS>0 & DFC==1),]

数据

df1 <- structure(list(COW = c(1L, 1L, 1L, 1L, 1L), 
PARITY = c(1L, 1L, 1L, 2L, 2L), DFC = c(1L, 2L, 3L, 1L, 2L), 
ABCS = c(0.5, 1, 0.25, -0.3, 0.5)), 
.Names = c("COW", "PARITY", "DFC", "ABCS"), 
class = "data.frame", row.names = c(NA,-5L))