Удалить первую часть строки в кадре данных R - PullRequest
0 голосов
/ 04 августа 2020

У меня проблемы с решением этой проблемы. Предположим, что такой фрейм данных:

COL_1 COL_2           COL_3  COL_4
1     UP_RED_LIGHT    23.43  UP_R
2     UP_YELLOW_LIGHT 23.33  UP_Y
3     DP_GREEN_DARK   43.76  DP_G
4     DP_BROWN_LIGHT  45.65  DP_B
5     R_BLACK_DARK    12.32  R_B

Я хочу поймать каждую строку в этом фрейме данных, которая начинается с «DP_», и удалить ее из строки.

Результат, который я хочу получить :

COL_1 COL_2           COL_3  COL_4
1     UP_RED_LIGHT    23.43  UP_R
2     UP_YELLOW_LIGHT 23.33  UP_Y
3     GREEN_DARK      43.76  G
4     BROWN_LIGHT     45.65  B
5     R_BLACK_DARK    12.32  R_B

В общем, я хочу заменить на '' всякий раз, когда строка в моем фрейме данных начинается с DP_ в каждом столбце. Тот факт, что он начинается, важен, если он был в середине строки, раствор должен покинуть ее. Вот почему такое решение:

df<- gsub('DP_', '', df)

мне не подходит.

Есть ли хорошее и чистое решение для этого?

Заранее благодарим вас за помощь.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Вы также можете использовать mutate_at и str_replace для получения желаемого результата.

library(dplyr)
library(stringr)
df %>% 
    mutate_at(vars("COL_2", "COL_4"), ~ str_replace(., "DP_", ""))
 

#  COL_1           COL_2 COL_3 COL_4
#1     1    UP_RED_LIGHT 23.43  UP_R
#2     2 UP_YELLOW_LIGHT 23.33  UP_Y
#3     3      GREEN_DARK 43.76     G
#4     4     BROWN_LIGHT 45.65     B
#5     5    R_BLACK_DARK 12.32   R_B 

Data

df <- data.frame(COL_1 = c(1L:5L), COL_2 = c("UP_RED_LIGHT","UP_YELLOW_LIGHT", "DP_GREEN_DARK",
                "DP_BROWN_LIGHT","R_BLACK_DARK"), COL_3 = c(23.43,23.33,43.76,45.65,12.32),
                COL_4 = c("UP_R", "UP_Y", "DP_G", "DP_B", "R_B"))
1 голос
/ 04 августа 2020

Вы используете sub почти правильно, за исключением того, что вы хотите удалить только DP_ в начале строки, а также вы хотите сделать это только со столбцом COL_2:

df$COL_2 <- sub("^DP_", "", df$COL_2)

Чтобы выполнить эту замену в одном или нескольких столбцах, например, в COL_2 и COL_4, мы можем попробовать:

cols <- c("COL_2", "COL_4")
df[cols] <- lapply(df[cols], function(x) sub("^DP_", "", x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...