R如何在前导零而不是空格处添加零

7 浏览
0 Comments

R如何在前导零而不是空格处添加零

首先,我已经阅读了以下帖子(R:保留前导零还有以及这个以及这个,或这个。)但其中没有一个回答了我的问题。

我试图在ID列前添加一个前导零。该文件是从Excel导入的,我不确定如何上传到这里。可能无法将过程复制给您。

当我使用以下任何一种代码添加前导零时

formatC(data$col,width=5,format="s",flag="0")
sprintf("%05s",data$col)
gsub('\\s','0',data$col)

它们都给我一个字符串前面的空格,而不是零。例如:" 4097"

我还尝试修剪任何空格trimws(sort$DlrNbr, which = c("both", "left", "right")),然后重新尝试添加前导零,但仍然失败。

你有任何想法发生了什么吗?任何见解都是有帮助的!

0
0 Comments

在R中,有时候我们需要在字符串的前面添加零,而不是空格。这个问题的出现是因为在处理数据时,我们希望保持数据的格式一致性,尤其是在比较和排序时。下面是解决这个问题的方法。

一种解决方法是使用R中的stringr包。我们可以使用str_pad函数来在字符串前面添加零。具体的代码如下:

library(stringr)
str_pad(data$col, 5, pad = "0")

在这个代码中,data$col表示要处理的字符串,5表示在字符串的前面添加5个零,pad = "0"表示要添加的字符是零。

通过使用stringr包中的str_pad函数,我们可以轻松地在R中将前导零添加到字符串中,从而保持数据的格式一致性。这对于需要比较和排序字符串的情况非常有用。

0
0 Comments

问题的原因是使用了错误的格式化方式,使用了字符串格式化的方式导致无法添加前导零。解决方法是使用整数格式化的方式来添加前导零,具体可以使用sprintf('%05d', data$col)来实现(注意使用了d来表示整数格式化,而不是s表示字符串格式化)。在帮助页面https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/sprintf中可以找到更多详细信息。

另外,还有一个解决方法是先将数据转换为数值类型,然后再添加前导零。感谢Lucacerone提供的解决方法,作者并不知道可以进行数值转换和添加前导零,非常感谢!

但是对于某些情况,上述方法可能仍然不起作用。例如,sprintf('%02s', "1")返回的是" 1",而不是"01"。在这种情况下,可以使用gsub函数将空格替换为0来实现添加前导零的效果。具体方法是df$col<- gsub(" ", "0",df$col )。在默认情况下,gsub函数返回的是空格,而不是0,所以作者进行了替换操作。

通过以上方法,可以解决R语言中添加前导零而不是空格的问题。

0
0 Comments

在R中,有一个问题是如何在字符串的开头添加零而不是空格。一个解决方法是使用paste函数。具体代码如下:

library(data.table)
data[, col := paste0('0', col)]

然而,这种方法存在一个问题,即有些id(例如45009)不需要在开头添加零。感谢你的帮助。

0