Проверьте ответ ниже.Он извлекается из базовой функции startsWith()
и использует dplyr
для манипулирования данными с использованием case_when
и mutate
.Удачи вам и добро пожаловать в StackOverflow.
library(dplyr)
df =
as.data.table(
c(
"hello",
"name",
"age",
"hey",
"apron",
"street",
"night",
"soap"
)
)
colnames(df) =
"V1"
df %>%
mutate(V1 = case_when(startsWith(df$V1, "a") == TRUE~ '1',
startsWith(df$V1, "h") == TRUE~ '2',
startsWith(df$V1, "s") == TRUE~ '3',
startsWith(df$V1, "n") == TRUE~ '4'))
Вывод:
V1
1 2
2 4
3 1
4 2
5 1
6 3
7 4
8 3
Если вы хотите заменить более одной буквы одним номером, просто добавьте новую букву иукажите номер, на который вы хотите его изменить, не боясь выдать ошибку.В приведенном ниже коде я просто изменил числовое значение, связанное с 'h', с '3' на '1':
df %>%
mutate(V1 = case_when(startsWith(df$V1, "a") == TRUE~ '1',
startsWith(df$V1, "h") == TRUE~ '1',
startsWith(df$V1, "s") == TRUE~ '3',
startsWith(df$V1, "n") == TRUE~ '4'))
Output:
V1
1 1
2 4
3 1
4 1
5 1
6 3
7 4
8 3
Чтобы поиграть с последовательностями букв, используйте встроенный набор данных, известный какletters
.
Затем вы можете использовать что-то вроде
letters[1:4]
[1] "a" "b" "c" "d"