13

我想.txt在 R 中导入一个表(文件)read.table()。我表中的一列是一个包含九个数字的 ID - 一些 ID 以 0 开头,另一些以 1 或 2 开头。

R 会截断第一个 0(012345678 变为 12345678),这会导致在使用此 ID 合并另一个表时出现问题。

有人可以给我一个提示如何解决这个问题吗?

4

3 回答 3

16

正如本的回答中所说,colClasses这是更简单的方法。这是一个例子:

read.table(text = 'col1 col2
           0012 0001245',
           head=T,
           colClasses=c('character','numeric'))

  col1 col2
1 0012 1245      ## col1 keep 00 but not col2
于 2013-02-13T13:44:31.427 回答
3

一个可重现的示例会很好,但是:使用colClasses参数 toread.table()指定您希望将此列作为character变量读取,而不是numeric. 或者character在读入它们后将它们重新变为变量,使用sprintf前导零填充数字。(前者可能更容易。)

于 2013-02-13T13:25:27.613 回答
0

这是一个 for 循环,用于根据条件向行添加前导零。虽然这是一个事后解决方案(在阅读表格添加前导 0 ),但它对我有用,所以我想分享:

让我们以一列邮政编码为例。所有值都应包含 5 位数字(例如 01234),但 R 会删除前导零(因此 '01234' 变为 '1234')。您可以使用以下代码将尾随零添加到仅包含 4 个字符的所有单元格:

for (i in 1:nrow(df)){
  if(nchar(df$zipCode[i])<5){
    df$zipCode[i]<- paste0('0',df$zipCode[i])
  }
}
于 2017-07-10T18:43:49.183 回答