2015-10-08 48 views
2

我有一个数据框,其格式不正确。例如,我在第一行的数据的ID为“1”,但它的格式必须是:tt0000001,ID“23212”必须是:tt0023212自定义字符串填充

有没有一种方法可以将所有数据转换为一个列成这种格式?

回答

5

使用sprintf

sprintf("tt%07d", 1) 
sprintf("tt%07d", 23212) 

编辑

是的,你可以为每列做到这一点:

vec <- seq(37, 2000, 100) 
sprintf("tt%07d", vec) 
[1] "tt0000037" "tt0000137" "tt0000237" "tt0000337" 
[5] "tt0000437" "tt0000537" "tt0000637" "tt0000737" 
[9] "tt0000837" "tt0000937" "tt0001037" "tt0001137" 
[13] "tt00" "tt0001337" "tt0001437" "tt0001537" 
[17] "tt0001637" "tt0001737" "tt0001837" "tt0001937" 

考虑到vec是你的id列(如df$id)。

+0

谢谢,是有办法,我可以在数据帧中的所有行做到这一点?我有21米他们所以不想手动为每个:) – Benirving92

+0

谢谢!我做的只是它的工作。但是,它会打印结果而不是更新我的数据框。有没有更新数据框的方法? – Benirving92

+0

只需将新值赋给它:'df $ id < - sprintf(“tt%07d”,df $ id)' –

1

使用stringr包:

#dummy data 
df <- data.frame(id = c("1","23212")) 

library(stringr) 
df$id1 <- paste0("tt", str_pad(myNames, 7, "left", "0")) 

#result 
df 

#  id  id1 
# 1  1 tt0000001 
# 2 23212 tt0023212