如果字符数为2,我想用零填充字符串(在左侧)。
让数据框如下:
df<-data.frame(a=c("352","35","54","1"),stringsAsFactors=FALSE)
我想得到
df
a
1 352
2 035
3 054
4 1
我尝试使用mutate_if
,如下所示:
df %>% mutate_if(nchar(a)==2,str_pad(a,width=3,side="left",pad="0"))
df %>% mutate_if(nchar(vars(a))==2,str_pad(a,width=3,side="left",pad="0"))
但是,两者都无法奏效。
我还尝试将mutate
与replace
:
df %>% mutate(a=replace(a,which(nchar(a)==2),str_pad(a,width=3,side="left",pad="0")))
同样,我无法达到我想要的目标。
答案 0 :(得分:1)
我们可以使用if_else
df %>%
mutate(a = if_else(nchar(a)==2, str_pad(a,width=3,side="left",pad="0"), a))
或case_when
df %>%
mutate(a = case_when(nchar(.$a)==2 ~ str_pad(.$a, width = 3, side = "left", pad = "0"),
TRUE ~ .$a) )
# a
#1 352
#2 035
#3 054
#4 1