我正在清理一个具有以下字符变量的数据集:
df <- c("2015 000808", "2013 000041", "2015 000005", "2015 301585", "2015 311585", "2014 380096", "2013 100041")
因此,我可以实现这样的结果:删除第二个数字前面的000,并将每个数字粘贴在一起:
"2015808"
"201341"
"20155"
"2015301585"
"2015311585"
"2014380096"
"2013100041"
我被困在试图找到最好的方式,以删除0之前发生的数字在第二部分的字符串。我看过gsub
和substring
,但我有点困惑,如何根据它们的位置和条件删除零模式?类似于“移除一个或多个零”的东西,只有当它们在数字1-9之前并位于7-11位置时才能移除。
发布于 2022-01-30 19:04:15
而akrun的方法是应该使用的方法。以下是stringr
组合:
,
word(df, 1)
,我们取字符串的左边,,
word(df, -1)
,右边(这里我们使用2a。使用regex zeros.str_remove_all
我们使用str_c
组合了两个部分:library(stringr)
str_c(word(df,1), str_remove_all(word(df, -1), '^0+'))
[1] "2015808" "201341" "20155" "2015301585" "2015311585" "2014380096" "2013100041"
发布于 2022-01-30 17:49:25
我们可以使用read.table
作为两列进行读取(通过使用默认的空格分隔符和数值类不允许0前缀,从而去掉0)自动读取为numeric
列,然后使用do.call
逐行读取data.frame列。
do.call(paste0, read.table(text = df, header = FALSE))
[1] "2015808" "201341" "20155" "2015301585" "2015311585" "2014380096" "2013100041"
或使用sub
-匹配一个或多个空格(\\s+
),后面为零或多个(*
) 0,并替换为空白(""
)
sub("\\s+0*", "", df)
[1] "2015808" "201341" "20155" "2015301585" "2015311585" "2014380096" "2013100041"
https://stackoverflow.com/questions/70917283
复制相似问题