【发布时间】:2021-04-30 12:45:25
【问题描述】:
我有一个包含一列字符串的数据框,我想删除每个字符串中的前三个字符。如下例:
从这里:
df <- data_frame(col1 = c('01_A','02_B', '03_C'))
到这里:
df <- data_frame(col1 = c('A','B', 'C'))
我一直在尝试使用 dplyr transmute 功能,但我无法真正使用它。
任何帮助将不胜感激!
【问题讨论】:
我有一个包含一列字符串的数据框,我想删除每个字符串中的前三个字符。如下例:
从这里:
df <- data_frame(col1 = c('01_A','02_B', '03_C'))
到这里:
df <- data_frame(col1 = c('A','B', 'C'))
我一直在尝试使用 dplyr transmute 功能,但我无法真正使用它。
任何帮助将不胜感激!
【问题讨论】:
我认为这会奏效:
library(dplyr)
library(stringr)
df %>%
mutate(col1 = str_remove(col1, "\\d+(_)"))
col1
1 A
2 B
3 C
【讨论】:
我们也可以使用base R中的substring作为上面提到的基于位置的子串提取的OP
df$col1 <- substring(df$col1, 4)
df$col1
#[1] "A" "B" "C"
【讨论】:
你可以像下面这样使用sub
> df %>%
+ mutate(col1 = sub("^.{3}", "", col1))
# A tibble: 3 x 1
col1
<chr>
1 A
2 B
3 C
【讨论】: