在 data.frame 的列中填充字符串

2024-01-01

我有一个data.frame X,有一个列A洋溢着chr,其中大部分属于nchar= 5,但有些是nchar=4。我想放一个0在那些人面前。

我会用以下伪代码来做到这一点:

foreach( element_of_X$A as a ){  # this line is pseudo-code for Idk how to do it in R
    if(nchar(a) < 5){            # I think these lines are valid
        paste0(0,a)              # I think these lines are valid
    }
}

(显然我来自 PHP)。我怎样才能用干净的 R 代码做到这一点? (那个,或更有效的解决方案)

Thanks


实际上sprintf对我不起作用,所以如果您不介意常见的依赖关系:

#reproducible example -- this happens with zip codes sometimes
X <- data.frame(A = c('10002','8540','BIRD'), stringsAsFactors=FALSE)

# X$A <- sprintf('%05s',X$A) didn't work for me
# Note in ?sprintf: 0: For numbers, pad to the field width with leading zeros. 
# For characters, this zero-pads on some platforms and is ignored on others.

library('stringr')
X$A <- str_pad(X$A, width=5, side='left', pad='0')
X
#      A
#1 10002
#2 08540
#3 0BIRD

或者,如果您更喜欢基本解决方案,则以下内容是等效的:

X$A <- ifelse(nchar(X$A) < 5, paste(c(rep("0",5-nchar(X$A)), X$A), collapse=""), X$A)

(请注意,这适用于长度为 4 或更少的字符串,而不仅仅是 4)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 data.frame 的列中填充字符串 的相关文章

随机推荐