【发布时间】:2021-07-01 20:37:58
【问题描述】:
最小的例子 - 我有 9 个来自 3 个受试者的问卷回答,其中包含两个问题:
set.seed(1)
df <- data.frame(ID = c(rep("A", 2), rep("B", 3), rep("C", 4)),
Q1 = sample(0:5, 9, replace=T),
Q2 = sample(1:7, 9, replace=T),
Days_Used = c(rep(10, 2), rep(5, 3), rep(4, 4))
)
将 Days_Used 视为 End_Date - Start_Date。我想以两种方式之一过滤数据框 - 按 Days_Used 或填写问卷的次数(即按与主题关联的行数),具体取决于变量 FILTER_BY_DAYS_USED 是否为 TRUE 或FALSE。我尝试了以下方法:
FILTER_BY_DAYS_USED <- TRUE
df %>%
group_by(ID) %>%
if_else(FILTER_BY_DAYS_USED,
filter(Days_Used >= 5),
filter(n() >= 3))
但是当我执行它时得到一个错误消息
Error: `condition` must be a logical vector, not a grouped_df/tbl_df/tbl/data.frame` object.
我想获得以下输出:
-
FILTER_BY_DAYS_USED为TRUE时:前5行对应科目A和B -
FILTER_BY_DAYS_USED为FALSE时:最后7行对应主题B和C
我的条件过滤器的正确语法是什么?
在此先感谢
托马斯·飞利浦
【问题讨论】: