Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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_If Statement_Filter - Fatal编程技术网

按值筛选R数据集,但保留来自相同记录编号的行

按值筛选R数据集,但保留来自相同记录编号的行,r,if-statement,filter,R,If Statement,Filter,我的调查结果是有组织的,每一行是一个调查问题。这意味着一个人的调查回答可能占据8行。我想保留所有对以下问题得分为0或1的人的回答:“提供商会推荐”或“设施会推荐”。我知道如何过滤这些分数,但不知道如何保留所有其他行的记录。编写此代码的最佳方式是什么 Tidyverse解决方案: 库(dplyr) dat%>% 分组依据(记录)%>% 筛选器(任何(问题=='provider'和%0:1中的值%)%>% 解组() ##tibble:3 x 3 #记录问题值 # #1 2

我的调查结果是有组织的,每一行是一个调查问题。这意味着一个人的调查回答可能占据8行。我想保留所有对以下问题得分为0或1的人的回答:“提供商会推荐”或“设施会推荐”。我知道如何过滤这些分数,但不知道如何保留所有其他行的记录。编写此代码的最佳方式是什么

Tidyverse解决方案:

库(dplyr)
dat%>%
分组依据(记录)%>%
筛选器(任何(问题=='provider'和%0:1中的值%)%>%
解组()
##tibble:3 x 3
#记录问题值
#              
#1 26544供应商1
#2 26544信任4
#3 26544通信3
dat%>%
筛选器(问题=='provider'&在%0:1中的值%)%>%
选择(记录)%>%
左联合(dat,by=“记录”)
#通过=“记录”加入
#记录问题值
#1 26544供应商1
#2 26544信任4
#3 26544通信3
数据表:

(注意:我在这里使用
magrittr::%%>%%
,通常上面加载了
dplyr
,仅用于表示。我喜欢管道式的命令流,但将其适应于非
magrittr
流并不困难。)

库(data.table)
图书馆(magrittr)
datDT[,.SD[any(问题=='provider'和%0:1中的值%)],by=“record”]
#记录问题值
#1:26544提供者1
#2:26544 4
#3:26544通讯3
datDT[question=='provider'和%0:1中的值%,(记录)]%>%
datDT[,on=“记录”]
#记录问题值
#1:26544提供者1
#2:26544 4
#3:26544通讯3

资料


dat请不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,并且可能不适合某些移动设备。参考:(和)。请直接包括代码或数据(例如,
dput(head(x))
data.frame(…)
),当我使用此代码时,它包括本应过滤掉的值,例如值为10I的“Provider Wild Recommension”(提供者建议)我无法重现该行为。如果我用
dat$value[4]更改源数据,我就发现了我的错误。谢谢你的帮助。