基于前三个数字的子集
Subset based on first three numbers
我有一个非常大的变量数据集,我需要根据邮政编码的前三个数字进行子集化。我不确定该怎么做,如果您能提供任何帮助,我将不胜感激。
我如何将此示例 dput 子集化以删除所有以 721 开头的邮政编码。请注意,我不能简单地执行大于 (>) 的操作,因为有大于 721 的邮政编码谢谢!
输入:
data <- structure(list(state = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("AR",
"IL", "MO"), class = "factor"), zip = c(72003L, 72042L, 72073L,
72166L, 72038L, 72055L, 72160L, 72026L, 72048L, 72140L, 72003L,
72042L, 72073L, 72166L, 72038L, 72055L, 72160L, 72026L, 72048L,
72140L)), .Names = c("state", "zip"), row.names = c(NA, 20L), class = "data.frame")
数据:
state zip
1 AR 72003
2 AR 72042
3 AR 72073
4 AR 72166
5 AR 72038
6 AR 72055
7 AR 72160
8 AR 72026
9 AR 72048
10 AR 72140
11 AR 72003
12 AR 72042
13 AR 72073
14 AR 72166
15 AR 72038
16 AR 72055
17 AR 72160
18 AR 72026
19 AR 72048
20 AR 72140
你可以试试substr
data[substr(data$zip, 1,3)!=721,]
或使用data.table
library(data.table)
setDT(data)[substr(zip,1,3)!=721]
或dplyr
library(dplyr)
data %>%
filter(substr(zip, 1,3)!=721)
或使用 tidyr
中的 extract
library(tidyr)
extract(data, zip, 'zip1', '(...).*', FALSE) %>%
filter(zip1!=721) %>%
select(-zip1)
我有一个非常大的变量数据集,我需要根据邮政编码的前三个数字进行子集化。我不确定该怎么做,如果您能提供任何帮助,我将不胜感激。
我如何将此示例 dput 子集化以删除所有以 721 开头的邮政编码。请注意,我不能简单地执行大于 (>) 的操作,因为有大于 721 的邮政编码谢谢!
输入:
data <- structure(list(state = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("AR",
"IL", "MO"), class = "factor"), zip = c(72003L, 72042L, 72073L,
72166L, 72038L, 72055L, 72160L, 72026L, 72048L, 72140L, 72003L,
72042L, 72073L, 72166L, 72038L, 72055L, 72160L, 72026L, 72048L,
72140L)), .Names = c("state", "zip"), row.names = c(NA, 20L), class = "data.frame")
数据:
state zip
1 AR 72003
2 AR 72042
3 AR 72073
4 AR 72166
5 AR 72038
6 AR 72055
7 AR 72160
8 AR 72026
9 AR 72048
10 AR 72140
11 AR 72003
12 AR 72042
13 AR 72073
14 AR 72166
15 AR 72038
16 AR 72055
17 AR 72160
18 AR 72026
19 AR 72048
20 AR 72140
你可以试试substr
data[substr(data$zip, 1,3)!=721,]
或使用data.table
library(data.table)
setDT(data)[substr(zip,1,3)!=721]
或dplyr
library(dplyr)
data %>%
filter(substr(zip, 1,3)!=721)
或使用 tidyr
extract
library(tidyr)
extract(data, zip, 'zip1', '(...).*', FALSE) %>%
filter(zip1!=721) %>%
select(-zip1)