我已經掌握了一些非常混亂的數據,並且編寫了一些函數來完成一些轉換(字符串到數字),我很想改進它。基本上這個函數需要一個混亂的字符數據向量並將數據轉換爲數字。從傳遞給函數的列名導出變量
例如:
## say you had this
df1 <- data.frame (V1 = c(" $25.25", "4,828", " $7,253"), V2 = c("THIS is bad data", "725", "*error"))
numconv <- function(vec){
vec <- str_trim(vec)
vec <- gsub(",|\\$", "", vec)
if(sum(!grepl("[0-9]",vec)) == 0){
vec <- as.numeric(vec)
}
if(sum(!grepl("[0-9]",vec)) != 0){
print("!!ERROR STRANGE CHARACTERS!!")
}
}
df1$V1recode <- numconv(df1$V1)
df1$V2recode <- numconv(df1$V2)
[1] "!!ERROR STRANGE CHARACTERS!!"
我可分配功能中的原始列名的名字怎麼做,我可以將其粘貼到函數中的錯誤信息,所以它不是寫着:
!! V2中的錯誤奇怪字符!
我試過在函數中調用names()和colnames(),但這似乎不起作用。
由於提前, Ç
邊注:爲什麼不直接'as.numeric(GSUB(「[^ 0-9 \\ 。]「,」「,df1 $ V2))'然後檢查」NA「值? – joran 2013-05-10 22:18:17
非常好的一點! – Chris 2013-05-10 23:15:49