2017-12-01 6 views
0

郵便番号をRに読み込む必要がありますが、二重にする必要があります。私はまたゼロで始まるものの先行ゼロを保持する必要があります。私はこれは私がしたいが、それは文字型にそれらすべてを変更し、私は数字または二重の必要とする別の関数に地域のコラムを読むことができない方法を変換しR欄に先行ゼロを二重にする方法

for (i in 1:length(df$region)){ 
    if (nchar(df$region[i])==4) { 
    df$region[i] <- paste0("0", df$region[i]) 
    } 
} 

を試してみました。数値または二重に変換すると、先頭のゼロをもう一度取り除きます。何か案は?

+2

"しかし、それらは2つのタイプにする必要があります。 – Roland

答えて

1

なぜ数値として保存するのではなく、必要なときにゼロを追加するのはformatCですか?例えば、

tst <- 345 
class(tst) 
formatC(tst, width = 5, format = "d", flag = "0") 

は簡潔にするため、

#[1] "numeric" 
#[1] "00345" 

を与え、あなたもラッパーを書くことができます:

zip <- function(z)formatC(z, width = 5, format = "d", flag = "0") 
zip(tst) 
#[1] "00345" 

、必要なときにこれが唯一の先行ゼロが追加されます。

zip(12345) 
#[1] "12345" 
1

郵便番号がテキストとして表示される列と、もう1つの列が2つの列を保持することをお勧めします。最初に郵便番号を文字データとして読み込み、それから二重列を作成する必要があります。

# given df$zip_code 
df$zip_as_double <- as.double(df$zip_code) 

二重変数は、通常、先行ゼロの数を保持しません。これらの数字は、とにかく重要ではないためです。だから私は文字データとしてあなたの郵便番号を格納することはここで唯一の選択肢だと思います。

+0

感謝します、ありがとう! –

関連する問題