我有一个大型数据框(df),看起来像下面的示例。数据集中存在许多数据输入错误,我需要删除它们。在样本数据中,所有新南威尔士州应该有一个以2开头的邮政编码。所有VIC国家都应该有一个以3开头的邮政编码。
| Suburb | State | Postcode |
| ------ | ----- | -------- |
| FLEMINGTON | NSW | 2140 |
| FLEMINGTON | NSW | 2144 |
| FLEMINGTON | NSW | 3996 |
| FLEMINGTON | VIC | 2996 |
| FLEMINGTON | VIC | 3021 |
| FLEMINGTON | VIC | 3031 |
我需要决赛桌看起来像......
| Suburb | State | Postcode |
| ------ | ----- | -------- |
| FLEMINGTON | NSW | 2140 |
| FLEMINGTON | NSW | 2144 |
| FLEMINGTON | VIC | 3021 |
| FLEMINGTON | VIC | 3031 |
以下解决方案有点接近,但我不知道如何过滤以特定数字开头的整数并且在时间压力下。
Extracting rows from df based on multiple conditions in R
非常感谢任何帮助。
答案 0 :(得分:3)
为了使其易于扩展,请将其作为合并操作,仅针对每种状态的可接受值:
A
答案 1 :(得分:0)
试试这个?如果您的邮政编码是整数&这些是唯一的条件,它应该非常简单:
df <- data.frame(Suburb = rep("FLEMINGTON", 6),
State = c(rep("NSW", 3), rep("VIC", 3)),
Postcode = c(2140,2144,3996,2996,3021,3031))
library(dplyr)
df <- df %>%
filter((State == "NSW" & Postcode < 3000) | (State == "VIC" & Postcode >= 3000))
> df
Suburb State Postcode
1 FLEMINGTON NSW 2140
2 FLEMINGTON NSW 2144
3 FLEMINGTON VIC 3021
4 FLEMINGTON VIC 3031