Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按单列和多因素筛选数据集_R_Filter_Dplyr - Fatal编程技术网

R 按单列和多因素筛选数据集

R 按单列和多因素筛选数据集,r,filter,dplyr,R,Filter,Dplyr,这可能是一个简单的问题,但我找了很长时间的问答,并阅读了所有我能找到的备忘单,仍然找不到解决办法 假设我有以下数据集 participant <- c(1, 1, 2, 2, 3,3 ,4,4) trial <- c(1, 2, 2, 3, 4, 2, 3, 4) page <- c(1, 2, 2, 5, 6, 2, 1, 2) test <- data.frame(participant, trial, page) participantdplyr::filte

这可能是一个简单的问题,但我找了很长时间的问答,并阅读了所有我能找到的备忘单,仍然找不到解决办法

假设我有以下数据集

participant <- c(1, 1, 2, 2, 3,3 ,4,4)
trial <- c(1, 2, 2, 3, 4, 2, 3, 4) 
page <- c(1, 2, 2, 5, 6, 2, 1, 2) 
test <- data.frame(participant, trial, page)

participant
dplyr::filter
仅保留所提供条件为true的行。您的想法是正确的,一种简单的方法是生成一个与要删除的行匹配的条件语句,然后将其反转以选择其他行。问题在于如何将
==
转换为
=与AND操作员交互
&

您给出了条件
参与者!=“1”和试用版!=“2”&页!=“2”
仅当以下所有条件均为真时才为真(因为您使用了
&
):

  • 参与者不是1
  • 审判不是2
  • 页面不是2
因此,如果一行不符合这些标准中的任何一个(例如,
participant==1的每一行),它将被删除


因为您要做的是生成一个与要删除的行相匹配的条件语句,然后使用NOT运算符将其反转围绕括号中的整个语句:

dplyr::filter(test, !(participant == 1 & trial == 2 & page == 2))

  participant trial page
1           1     1    1
2           2     2    2
3           2     3    5
4           3     4    6
5           3     2    2
6           4     3    1
7           4     4    2

请记住,我不想用更少的列或RAW创建新的更小的数据集,因为我的数据集庞大且非常复杂,需要完整。更具体地说,我需要删除参与者1的试用版2的第2页
dplyr::filter(test, !(participant == 1 & trial == 2 & page == 2))

  participant trial page
1           1     1    1
2           2     2    2
3           2     3    5
4           3     4    6
5           3     2    2
6           4     3    1
7           4     4    2