R 为什么我一个人就能拿到纽约的产品?

R 为什么我一个人就能拿到纽约的产品?,r,R,考虑以下向量“tels”,其中包含来自“堪萨斯”、“德克萨斯”和“纽约”地区的电话号码 tels我们substr将“tels”命名,然后创建一个命名的向量,以匹配substr值,并将其替换为命名向量中的值 data.frame(PhoneNumbers = tels, state = setNames(c("KANSAS", "NEW YORK", "TEXAS"), c('510', '707', '650'))[substr(tels, 1, 3)]) #

考虑以下向量“tels”,其中包含来自“堪萨斯”、“德克萨斯”和“纽约”地区的电话号码


tels我们
substr
将“tels”命名,然后创建一个命名的
向量
,以匹配substr值,并将其替换为命名向量中的值

data.frame(PhoneNumbers = tels, state = setNames(c("KANSAS", "NEW YORK", "TEXAS"),
               c('510', '707', '650'))[substr(tels, 1, 3)])
#   PhoneNumbers    state
#1  510-548-2238   KANSAS
#2  707-231-2440 NEW YORK
#3  650-752-1300    TEXAS
#4  510-674-3482   KANSAS
#5  510-853-5695   KANSAS
#6  510-882-9898   KANSAS
#7  650-555-6311    TEXAS
#8  707-885-6351 NEW YORK
#9  650-231-1234    TEXAS
#10 650-096-0023    TEXAS
#11 707-691-6763 NEW YORK

我们
substr
tels,然后创建一个命名的
向量
,以匹配substr值,并用命名向量中的值替换它

data.frame(PhoneNumbers = tels, state = setNames(c("KANSAS", "NEW YORK", "TEXAS"),
               c('510', '707', '650'))[substr(tels, 1, 3)])
#   PhoneNumbers    state
#1  510-548-2238   KANSAS
#2  707-231-2440 NEW YORK
#3  650-752-1300    TEXAS
#4  510-674-3482   KANSAS
#5  510-853-5695   KANSAS
#6  510-882-9898   KANSAS
#7  650-555-6311    TEXAS
#8  707-885-6351 NEW YORK
#9  650-231-1234    TEXAS
#10 650-096-0023    TEXAS
#11 707-691-6763 NEW YORK

您可以使用
因子
,标签为
状态
,标签为前3位数字

data.frame(tels,
 state = factor(substr(tels,0,3), c('510','650','707'), c('KANSAS','TEXAS','NEW YORK')))
           tels    state
1  510-548-2238   KANSAS
2  707-231-2440 NEW YORK
3  650-752-1300    TEXAS
4  510-674-3482   KANSAS
5  510-853-5695   KANSAS
6  510-882-9898   KANSAS
7  650-555-6311    TEXAS
8  707-885-6351 NEW YORK
9  650-231-1234    TEXAS
10 650-096-0023    TEXAS
11 707-691-6763 NEW YORK

您可以使用
因子
,标签为
状态
,标签为前3位数字

data.frame(tels,
 state = factor(substr(tels,0,3), c('510','650','707'), c('KANSAS','TEXAS','NEW YORK')))
           tels    state
1  510-548-2238   KANSAS
2  707-231-2440 NEW YORK
3  650-752-1300    TEXAS
4  510-674-3482   KANSAS
5  510-853-5695   KANSAS
6  510-882-9898   KANSAS
7  650-555-6311    TEXAS
8  707-885-6351 NEW YORK
9  650-231-1234    TEXAS
10 650-096-0023    TEXAS
11 707-691-6763 NEW YORK
您可以使用
^510
^650
^707
查找第一个图案。为了方便地添加新列,我使用了
dplyr
package

library(tidyverse) # has dplyr and stringr
# data set -------------------------------
(dirt <- data_frame(PhoneNumbers = c("510-548-2238", "707-231-2440", "650-752-1300", "510-674-3482", "510-853-5695", "510-882-9898", "650-555-6311", "707-885-6351", "650-231-1234", "650-096-0023", "707-691-6763")))
#> # A tibble: 11 x 1
#>    PhoneNumbers
#>    <chr>       
#>  1 510-548-2238
#>  2 707-231-2440
#>  3 650-752-1300
#>  4 510-674-3482
#>  5 510-853-5695
#>  6 510-882-9898
#>  7 650-555-6311
#>  8 707-885-6351
#>  9 650-231-1234
#> 10 650-096-0023
#> 11 707-691-6763
使用此函数,可以添加新列:
dplyr::mutate()

污垢%>%
变异(状态=查找区域(电话号码))
#>#A tibble:11 x 2
#>电话号码状态
#>               
#>1510-548-2238堪萨斯州
#>2707-231-2440纽约
#>3650-752-1300德克萨斯州
#>4510-674-3482堪萨斯州
#>5510-853-5695堪萨斯州
#>6510-882-9898堪萨斯州
#>7 650-555-6311德克萨斯州
#>8 707-885-6351纽约
#>德克萨斯州9650-231-1234
#>德克萨斯州10 650-096-0023
#>11707-691-6763纽约
您可以使用
^510
^650
^707
找到第一个图案。为了方便地添加新列,我使用了
dplyr
package

library(tidyverse) # has dplyr and stringr
# data set -------------------------------
(dirt <- data_frame(PhoneNumbers = c("510-548-2238", "707-231-2440", "650-752-1300", "510-674-3482", "510-853-5695", "510-882-9898", "650-555-6311", "707-885-6351", "650-231-1234", "650-096-0023", "707-691-6763")))
#> # A tibble: 11 x 1
#>    PhoneNumbers
#>    <chr>       
#>  1 510-548-2238
#>  2 707-231-2440
#>  3 650-752-1300
#>  4 510-674-3482
#>  5 510-853-5695
#>  6 510-882-9898
#>  7 650-555-6311
#>  8 707-885-6351
#>  9 650-231-1234
#> 10 650-096-0023
#> 11 707-691-6763
使用此函数,可以添加新列:
dplyr::mutate()

污垢%>%
变异(状态=查找区域(电话号码))
#>#A tibble:11 x 2
#>电话号码状态
#>               
#>1510-548-2238堪萨斯州
#>2707-231-2440纽约
#>3650-752-1300德克萨斯州
#>4510-674-3482堪萨斯州
#>5510-853-5695堪萨斯州
#>6510-882-9898堪萨斯州
#>7 650-555-6311德克萨斯州
#>8 707-885-6351纽约
#>德克萨斯州9650-231-1234
#>德克萨斯州10 650-096-0023
#>11707-691-6763纽约

我想要问题中提到的输出。我想要问题中提到的输出。