【发布时间】:2017-09-27 02:16:39
【问题描述】:
问题: 如果其中一行在另一列中具有特定值,我想删除特定类别的所有行(类似于下面链接中的问题)。但是,主要区别是我希望它仅在它与另一列中的条件匹配时才有效。
练习 df
prac_df <- data_frame(
subj = rep(1:4, each = 4),
trial = rep(rep(1:4, each = 2), times = 2),
ias = rep(c('A', 'B'), times = 8),
fixations = c(17, 14, 0, 0, 15, 0, 8, 6, 3, 2, 3,3, 23, 2, 3,3)
)
所以我的数据框看起来像这样。
subj ias fixations
1 1 A 17
2 1 B 14
3 2 A 0
4 2 B 0
5 3 A 15
6 3 B 0
7 4 A 8
8 4 B 6
并且我想删除所有主题 2,因为它在 ias 的值为 A 的行中的注视列的值为 0。但是我想在不删除主题 3 的情况下执行此操作,因为即使有0 它位于 ias 列值为 B 的行中。
到目前为止我的尝试。
new.df <- prac_df[with(prac_df, ave(prac_df$fixations != 0, subj, FUN = all)),]
但是,这缺少只有在 ias 列中具有值 A 时才会删除它的部分。我尝试了 & 或 if 的各种用法,但我觉得可能有一种我不知道的聪明而干净的方式。
我的目标是制作这样的 df。
subj ias fixations
1 1 A 17
2 1 B 14
3 3 A 15
4 3 B 0
5 4 A 8
6 4 B 6
非常感谢!
相关问题:
R: Remove rows from data frame based on values in several columns
【问题讨论】: