【发布时间】:2021-09-25 08:51:26
【问题描述】:
我已经尝试了几个小时,但我无法弄清楚。我有一个包含主题和条件df1 的数据框,我想从中排除具有特定值的观察值(df2 的变量“值”中小于 3。我无法使其工作,因为我需要删除来自df1,两个变量不同层次的组合。
这是 df1:
df1 <- structure(list(subject = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L),
condition = c("A", "A", "A", "B", "B", "B", "C", "C","C", "A", "A",
"A", "B", "B", "B", "C", "C", "C", "A", "A", "A","B", "B", "B", "C", "C", "C")),
row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
这是 df2
df2 <- structure(list(subject = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L,4L, 4L, 4L, 5L, 5L, 5L),
condition = c("A", "B", "C", "A", "B","C", "A", "B", "C", "A", "B", "C", "A", "B", "C"),
value = c(10L, 8L, 7L, 3L, 8L, 5L, 3L, 3L, 9L, 8L, 7L, 8L, 10L, 6L, 2L)),
row.names = c(NA,-15L), class = c("tbl_df", "tbl", "data.frame"))
我想在df1 中删除所有低于 3 的主题和条件组合,所以这将是最终的 df:
df3 <- structure(list(subject = c(2L, 3L, 3L, 5L),
condition = c("A","A", "B", "C")),
row.names = c(NA, -4L),
class = c("tbl_df","tbl", "data.frame"))
到目前为止,我一直在这样做,但我不能再这样做了,因为我有数百行......
df3 <- df1 %>% filter(!(subject==2 & condition=="A" |
subject==3 & (condition=="A" | condition=="B") |
subject==5 & condition=="C"))
【问题讨论】:
-
您好,感谢您提供可重现的数据。特别感谢您在重新格式化来自
dput()的文本方面所做的努力!只是为了澄清一下:您是说您当前的解决方案不准确,它在数百行上的性能很差,或者它是不可扩展到数百行中的更多行? -
仅供参考,我认为您的意思是说 " 小于 [或等于] 3 在变量
value中来自df2"。只有不等式<= 3会给你描述的结果。 -
你好。它的性能很差,因为它依赖于我重新排列 df2,然后在顶部手写主题和条件的组合(因此小于或等于 3 的组合)。