这是一个基本问题,但我花了2个小时寻找答案,但我没有找到解决方法。我有一个李克特量表(0,5,10),但不幸的是,我的数据集有一些不同的值(例如,800)。我写了一个可复制的代码。
我想使用dplyr只保留我只有0,5,10的行(或者删除整个行,我有一个奇怪的结果)
实施例 代码:
dat <- data.frame(v1=c(10,5,0,10),
v2=c(10,0,0,800),
v3=c(10,0,0,5),
v4=c(800,10,5,10),
v5=c(0,800,5,10))
我知道我可以使用类似的东西:
dat2 <- dat %>% filter(rowSums(.) < 50)
但是我想“循环”所有数据集,以便删除与我期望的数字不同的行。
由于
答案 0 :(得分:6)
将filter_all
与all_vars
:
dat
# v1 v2 v3 v4 v5
#1 10 10 10 800 0
#2 5 0 0 10 800
#3 0 0 0 5 5
#4 10 800 5 10 10
filter_all(dat, all_vars(. %in% c(0,5,10)))
# v1 v2 v3 v4 v5
#1 0 0 0 5 5