我想在R中使用.txt
导入表格(read.table()
文件)。我表中的一列是一个带有九个数字的ID - 一些id以0开头,另一列以1或2开头。
R截断前0(012345678变为12345678),这会导致使用此ID合并另一个表时出现问题。
有人能给我一个如何解决问题的提示吗?
答案 0 :(得分:14)
正如Ben的回答所说,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
答案 1 :(得分:3)
可重现的示例很不错,但是:使用colClasses
参数read.table()
来指定您希望将此列读取为character
变量,而不是numeric
}。或者在阅读它们之后将它们恢复为character
变量,使用sprintf
用前导零填充数字。 (前者可能更容易。)
答案 2 :(得分: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])
}
}