从数据框中的col的某些值中删除前缀

时间:2019-06-17 15:15:27

标签: r

我正在尝试标准化大数据框中的列,其中某些值的前缀为“ 6016”,而有些则没有。我需要删除所有的“ 6016”前缀,但是我不知道该怎么做。我是R的新手,所以很简单。

以下是数据框的摘要:

    A  
1   6016200703543489  
2   200726343459  
3   200403843687  
4   6016200784256494  
5   200704521983

我需要此列是这样,而不影响其他列:

    A  
1   200703543489  
2   200726343459  
3   200403843687  
4   200784256494  
5   200704521983

2 个答案:

答案 0 :(得分:2)

或者您可以这样做:

sub("^6016", "", df$A)

[1] "200703543489" "200726343459" "200403843687" "200784256494" "200704521983"

在这里,它从字符串的开头完全删除了6016

答案 1 :(得分:0)

我们可以字符串

df1$A <- substring(df1$A, nchar(df1$A) - 11, nchar(df1$A))
df1$A
#[1] "200703543489" "200726343459" "200403843687" "200784256494" "200704521983"

或与sub

sub(".*(.{12})$", "\\1", df1$A)
#[1] "200703543489" "200726343459" "200403843687" "200784256494" "200704521983"

这两种方法都可以使用,即使前缀不同并且更通用

如果我们需要删除“ 6016”

library(stringr)
str_remove(df1$A, '^6016')
[#1] "200703543489" "200726343459" "200403843687" "200784256494" "200704521983"

或者另一个选择是手动创建新的数据集

df1$A <- c("200703543489", "200726343459", "200403843687", 
          "200784256494", "200704521983")

注意:显示了4种方法(常规/精确/手动)。

数据

df1 <- structure(list(A = c(6016200703543489, 200726343459, 200403843687, 
6016200784256494, 200704521983)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5"))