我想从一列中提取一部分数据,然后使用R将其粘贴到另一列中:
我的数据如下:
names <- c("Sia","Ryan","J","Ricky")
country <- c("London +1234567890","Paris", "Sydney +0123458796", "Delhi")
mobile <- c(NULL,+3579514862,NULL,+5554848123)
data <- data.frame(names,country,mobile)
data
> data
names country mobile
1 Sia London +1234567890 NULL
2 Ryan Paris +5554848123
3 J Sydney +0123458796 NULL
4 Ricky Delhi +5554848123
我想在适用的情况下将电话号码与“国家/地区”列分开,然后将其放入手机中。
输出应为
> data
names country mobile
1 Sia London +1234567890
2 Ryan Paris +5554848123
3 J Sydney +0123458796
4 Ricky Delhi +5554848123
答案 0 :(得分:1)
您可以使用具有tidyverse
功能的separate
软件包。
请注意,我宁愿在移动矢量内部使用NA
而不是NULL
。
另外,在创建数据框时,我会使用选项stringsAsFactors = F
,以避免使用因子。
names <- c("Sia","Ryan","J","Ricky")
country <- c("London +1234567890","Paris", "Sydney +0123458796", "Delhi")
mobile <- c(NA, "+3579514862", NA, "+5554848123")
data <- data.frame(names,country,mobile, stringsAsFactors = F)
library(tidyverse)
data %>% as_tibble() %>%
separate(country, c("country", "number"), sep = " ", fill = "right") %>%
mutate(mobile = coalesce(mobile, number)) %>%
select(-number)
# A tibble: 4 x 3
names country mobile
<chr> <chr> <chr>
1 Sia London +1234567890
2 Ryan Paris +3579514862
3 J Sydney +0123458796
4 Ricky Delhi +5554848123