r - 如何在 R 中使用 dplyr 从数据框中删除观察列表?
问题描述
这是我的数据框 x
ID Name Initials AGE
123 Mike NA 18
124 John NA 20
125 Lily NA 21
126 Jasper NA 24
127 Toby NA 27
128 Will NA 19
129 Oscar NA 32
我还有一个我想从数据框 x,num[1:3] 中删除的 ID 列表,如下所示:y
>print(y)
[1] 124 125 129
我的目标是从数据框 x 中删除 y 中的所有 ID
这是我想要的输出
ID Name Initials AGE
123 Mike NA 18
126 Jasper NA 24
127 Toby NA 27
128 Will NA 19
我正在使用 dplyr 包并尝试这个,但它不起作用,
FinalData <- x %>%
select(everything()) %>%
filter(ID != c(y))
谁能告诉我需要纠正什么?
解决方案
当 'y' 的长度大于 1 时,我们可以使用%in%
和否定。不需要该步骤,因为它选择了所有具有!
select
everything()
library(dplyr)
x %>%
filter(!ID %in% y)
# ID Name Initials AGE
#1 123 Mike NA 18
#2 126 Jasper NA 24
#3 127 Toby NA 27
#4 128 Will NA 19
或者另一种选择是anti_join
x %>%
anti_join(tibble(ID = y))
在base R
,subset
可以使用
subset(x, !ID %in% y)
数据
y <- c(124, 125, 129)
x <- structure(list(ID = 123:129, Name = c("Mike", "John", "Lily",
"Jasper", "Toby", "Will", "Oscar"), Initials = c(NA, NA, NA,
NA, NA, NA, NA), AGE = c(18L, 20L, 21L, 24L, 27L, 19L, 32L)),
class = "data.frame", row.names = c(NA,
-7L))
推荐阅读
- c++ - 运算符函数是否也会导致函数开销
- intellij-idea - 在 IntelliJ 2019.3 中的 cucumber-core 中运行调试配置格式化程序错误
- terraform - AWS - 未继承 ECS 任务的标签
- laravel - Guzzle 身份验证返回 400 错误
- javascript - CSS动画干扰变换过渡
- javascript - 将文本框值转换为数组
- excel - Excel公式以获得所需的结果
- excel - 循环通过可见单元格
- reactjs - 使用 PassportJS 如何注销用户
- python - 在 Jupyter 中计算百分比时,我得到的信息比需要的多