【发布时间】:2020-12-06 00:44:53
【问题描述】:
有人可以帮我将 group_by 函数(或任何可以解决问题的函数)插入其中:
df$buy <-ifelse(
(
(df$month %in% c(201909, 201910, 201911, 201912, 202001, 202002)) &
(df$activity== 0)
),
1,
0
)
我的数据包含三列:ID、月份和 X。每个 id 有 12-14 个观察值。我想按 id 分组,然后将 1 分配给组中的所有 ID,其中月份 = 201009、201919、201911、201912、202001、202002 和 X 在这些行中 = 0。 例如,buy 是我要创建的新变量:
ID MONTH X Buy
1 201901 1 1
1 201002 0 1
1 201903 1 1
1 201904 0 1
1 201905 1 1
1 201906 1 1
1 201907 0 1
1 201908 0 1
1 201909 0 1
1 201910 0 1
1 201911 0 1
1 201912 0 1
1 202001 0 1
1 202002 0 1
2 201901 1 0
2 201902 1 0
2 201903 0 0
2 201904 0 0
2 201905 0 0
2 201906 1 0
2 201907 0 0
2 201908 0 0
2 201909 0 0
2 201910 1 0
2 201911 0 0
2 201912 1 0
2 202001 0 0
2 202002 0 0
仅当上述月份在 X 列中为零时,我希望基于 ID 的整个组为 1,如果不符合要求则为零。提前谢谢你。
【问题讨论】:
-
您的代码应该可以在不需要 group by 的情况下工作!
-
如果 Duck 不正确,那么很可能是因为我们对输入数据和您的预期输出了解不够。请通过添加示例 unambiguous 数据(例如,
data.frame(x=...,y=...)或来自dput(head(x))的输出)和给定该输入的预期输出,使这个问题更具重现性。参考:stackoverflow.com/q/5963269、minimal reproducible example 和 stackoverflow.com/tags/r/info。 -
@r2evans 你是对的,我的要求并不清楚。我已经编辑了帖子以包含我的一些数据和我想要的结果。谢谢你们。
标签: r