【发布时间】:2018-08-24 10:38:13
【问题描述】:
我有下一个数据
mydat=structure(list(group = c(111L, 111L, 111L, 111L, 111L, 111L,
111L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 555L, 555L, 555L,
555L, 555L, 555L, 555L), group2 = c(222L, 222L, 222L, 222L, 222L,
222L, 222L, 444L, 444L, 444L, 444L, 444L, 444L, 444L, 666L, 666L,
666L, 666L, 666L, 666L, 666L), action = c(0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L
), x1 = c(1L, 2L, 3L, 0L, 0L, 1L, 2L, 1L, 2L, 3L, 0L, 0L, 1L,
2L, 1L, 2L, 3L, 10L, 20L, 1L, 2L)), .Names = c("group", "group2",
"action", "x1"), class = "data.frame", row.names = c(NA, -21L
))
这里有两个组变量(group 和 group2)。 三组
111 222
333 444
555 666
action 列只能取值 0 和 1。
所以我需要找到这些组,其中 1 类动作它们只有 x1 的零值。 在我们的例子中是
111 222
333 444
因为对于所有 1 类动作,它们的 x1 为零。
所以我只能与555 666 组合作。
因为它至少有一个 x1 变量的第一类动作的非零值。
想要的输出
Mydat1 这里通过 x1 变量将第一类动作的至少一个非零值分组。
group group2 action x1
555 666 0 1
555 666 0 2
555 666 0 3
555 666 1 **10**
555 666 1 **20**
555 666 0 1
555 666 0 2
mydat2 组,对于所有 1 类动作,它们的 x1 为零
group group2 action x1
111 222 0 1
111 222 0 2
111 222 0 3
111 222 1 **0**
111 222 1 **0**
111 222 0 1
111 222 0 2
333 444 0 1
333 444 0 2
333 444 0 3
333 444 1 **0**
333 444 1 **0**
333 444 0 1
333 444 0 2
【问题讨论】:
标签: r dplyr data.table plyr