Заменить часть значения символа в R - PullRequest
0 голосов
/ 28 апреля 2020

В моем наборе данных (назовем его ds) у меня есть столбец со значениями, отформатированными с именем, за которым следуют ".1" или ".2", где .1 и .2 означают да или нет. Например, что-то вроде:

Имя
asth.1
asth.2
diabtd.1
diabtd.2

Я хочу заменить ".1 «и» .2 с чем-то вроде «да» и «нет».

Есть ли оптимальный способ сделать это? Спасибо!

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Вот простое решение с использованием библиотеки Tidyverse.

library(tidyverse)
ds <- data.frame('asth.1','asth.2','diabtd.1','diabtd.2',stringsAsFactors = FALSE)

ds <- str_replace(ds, '.1', 'yes') 
ds <- str_replace(ds, '.2', 'no') 
ds
1 голос
/ 28 апреля 2020

Если мы хотим создать новый столбец с «да», «нет» на основе значений суффикса .1, .2, затем извлечь числа, использовать их в качестве индекса и затем изменить его на «да», «нет». '

c("yes", "no")[readr::parse_number(as.character(df1$Name)) * 10]
#[1] "yes" "no"  "yes" "no" 

Или, если мы хотим заменить .1 и .2 на' yes ',' no ', тогда используйте str_replace_all с именем vector. Эти методы также могут принять 'n' количество изменений за один шаг

library(stringr)
str_replace_all(df1$Name, setNames(c('yes', 'no'), c('.1', '.2'))
#[1] "asthyes"   "asthno"    "diabtdyes" "diabtdno" 

data

df1 <- structure(list(Name = c("asth.1", "asth.2", "diabtd.1", "diabtd.2"
)), class = "data.frame", row.names = c(NA, -4L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...