dplyr 过滤器 "cell content" "cell value" 是
dplyr filter "cell content" "cell value" is
这是一个 基本问题,但我花了 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)
但我想 "loop" 所有数据集删除数字与我预期不同的行。
谢谢
将 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
这是一个 基本问题,但我花了 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)
但我想 "loop" 所有数据集删除数字与我预期不同的行。
谢谢
将 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