我正在尝试标准化大数据框中的列,其中某些值的前缀为“ 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
答案 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"))