0
我是R新手,因此請原諒我,如果我錯過了一些協議,但這裏是我的問題: 我正在創建臨時向量以便在需要時添加'0'。我最終想要一個由12位數組成的值,如果情況並非如此,我將添加我需要的'0'值。但是,試圖貼上我的臨時指數與相應的零之後,我得到以下信息:不允許使用不適用
colnames(ALLMBRS) <- c("SSN","tracts","GeoBlock","GeoCodeBlck","GeoMatch") #TA Members Tracts
#Remove special characters and decimals
tmp1 <- str_replace_all(ALLMBRS$GeoCode,"[[:punct:]]","")
#Temporary Vector of ALLMBRS
tmp2 <- tmp1
#Vectors of Indices used to add 0's
add1 <- str_length(ALLMBRS$tracts) == 11
add2 <- str_length(ALLMBRS$tracts) == 10
add3 <- str_length(ALLMBRS$tracts) == 9
add4 <- str_length(ALLMBRS$tracts) == 8
add5 <- str_length(ALLMBRS$tracts) == 7
#Paste temporary vector indices into temporary vector
tmp2[add1] <- paste(tmp2[add1],"0",sep="")
tmp2[add2] <- paste(tmp2[add2],"00",sep="")
tmp2[add3] <- paste(tmp2[add3],"000",sep="")
tmp2[add4] <- paste(tmp2[add4],"0000",sep="")
tmp2[add5] <- paste(tmp2[add5],"00000",sep="")
數據示例:
[1] "0" "0" "0" "0" "0" "0"
[7] "0" "360010146121" "720210310133" "0" "517100023001" "90034808002"
[13] "250158202021" "250158211004" "250138125003" "290470203002" "250138124031" "250158202033"
[19] "250138019012" "250138112002"
我希望所有的值包含12位。所以,我想看到
[1]000000000000
和
[12]900348080020
Error Message: Error in tmp2[add1] <- paste(tmp2[add1],"0",sep = ""):
NAs are not allowed in subscripted assignments
如果我有NA在我的數據我怎麼能繞過這個,所以我可以完成我的任務。 謝謝你的幫助。
謝謝理查德。我收到一條錯誤消息:'無效的時間值'。這是否會因爲我將NA作爲一些價值觀? – user3067851 2014-09-24 16:33:57
@ user3067851我剛試過,是的,它似乎是這樣。試試'x [!is.na(x)] < - str_pad(x [!is.na(x)],12,pad =「0」);看看是否有效。如果這對您有用,我會更新答案。 – 2014-09-24 16:36:12