2
我有一個數字矢量,我從Excel中導入了格式爲「奇怪」的方式。例如:12.000代表12000.我想將所有具有小數的數字變量轉換爲整個值(在本例中乘以1000--因爲R讀取12.000爲12,而我真正想要的是12000)。我試圖將其轉換爲字符,然後操作它以添加零。我不認爲這是最好的方式,但我嘗試這樣的長相:將數字矢量轉換爲其他數字矢量
vec <- c(12.000, 5.300, 5.000, 33.400, 340, 3200)
vec <- as.character(vec)
> vec
[1] "12" "5.3" "5" "33.4" "340" "3200"
x <- "([0 -9]{1})"
xx <- "([0 -9]{2})"
x.x <- "([0 -9]{1}\\.[0 -9]{1})"
xx.x <- "([0 -9]{2}\\.[0 -9]{1})"
我創造了這個正則表達式所以我可以做的是創造條件,如果grep的(X,VEC)是真的,那麼我做:paste0(「000」,vec)當vec在條件集合中爲真時。我的想法是爲所有可能的情況做到這一點,即:添加「000」如果x或如果xx &如果x.x或如果xx.x添加「00」
有沒有人知道我能做什麼?如果有更簡單的想法?
謝謝!
請出示期望的結果。爲什麼不嘗試用'colClasses =「character」'讀入它,然後使用'as.numeric(gsub(「[。]」,「」,df $ V1))' –
'vec的內容不清楚'被派生/讀入?應該有一個上游解決方案。 – Benjamin
你是如何從Excel導入數據的;先將它保存爲CSV?您的問題是因爲該文件使用大陸(歐洲)數字格式?如果是這樣,你可能想檢查在這個問題的最佳答案 http://stackoverflow.com/questions/6123378/how-to-read-in-numbers-with-a-comma-as-decimal-separator – Ricky