Извлечь часть значения столбца в новую переменную (mutate) - PullRequest
1 голос
/ 12 марта 2020

У меня есть df как это:

v1
a.1  
b.3
cz.90

Как я могу создать новый столбец, равный:

v1     v2
a.1    1
b.1    3
cz.90  90

После "." У меня могут быть числа, которые go от 1 до 999, поэтому я не могу сделать это на основании заданной c позиции

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Вам нужно разделить строки с помощью . в качестве разделителя

library(stringr)
# this will create a 2 columns matrix, first column: what comes before .
# second column what comes after
# number of rows = number of rows in df
split_matrix <- str_split_fixed(df$v1,fixed("."),2)
# assign the second column from split_matrix to df$v2
df$v2 <- as.numeric(split_matrix[, 2])

df
#     v1 v2
#1   a.1  1
#2   b.3  3
#3 cz.90 90

Изменить, так как ваш вопрос содержал тег tidyverse, вы можете сделать это следующим образом:

df%>% mutate(v2=as.numeric(str_split_fixed(df$v1,fixed("."),2)[,2]))
1 голос
/ 12 марта 2020

Используя регулярное выражение с sub, вы можете сделать:

library(dplyr)
df %>% mutate(New = as.numeric(sub(".*\\.","",v1)))

     v1 New
1   a.1   1
2   b.3   3
3 cz.90  90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...