如何解决在R中提取后如何删除某些行?
我试图在 R 中提取后删除某些行。 原始数据集定义为 raw_data。 某些行被定义为inner_data。
定义inner_data后,我想删除raw_data中的inner_data。
inner_data <- raw_data[(grepl("^30",raw_data$start) | grepl("^36",raw_data$start))
& (grepl("^30",raw_data$end) | grepl("^36",raw_data$end)),]
我该如何解决这个问题?
解决方法
这里有两种方法可以考虑:
1) 使用过滤变量
不是在一个步骤中直接从 inner_data
构造 raw_data
,而是首先创建一个新列,指示该行属于哪个输出数据集。使用此列过滤掉两个数据集。
类似于以下内容:
raw_data = raw_data %>%
mutate(splitting_col = (grepl("^30",start) | grepl("^36",start))
& (grepl("^30",end) | grepl("^36",end)))
inner_data = raw_data %>%
filter(splitting_col == TRUE)
raw_data = raw_data %>%
filter(splitting_col == FALSE)
2) 使用 anti_join
反连接是在与第二个表进行比较后从一个表中删除记录的操作。搜索“dplyr anti_join”应该会为您提供几个关于此的教程。
它的工作原理类似于连接,但排除记录而不是组合它们。类似于以下内容:
inner_data <- raw_data[(grepl("^30",raw_data$start) | grepl("^36",raw_data$start))
& (grepl("^30",raw_data$end) | grepl("^36",raw_data$end)),]
raw_data = raw_ata %>%
anti_join(inner_data)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。