2017-10-13 84 views
1

我有一列數字(字符),其中有8位或9位數據。如果數據點有9位數字,我想刪除第一位數字。我使用下面的命令:刪除R中的某列中的某些數據點的數字

file$hscode2 <- if (nchar(file$hscode1 >= 9)) { 

    file$hscode2 <- substr(file$hscode1,2,9) 

} 

該數據幀是「文件」,並與8/9的數字數據的列是hscode1和下降的第一個數字的新列時,它是9位的字符是hscode2

但是,我沒有得到預期的結果。有什麼建議麼?

謝謝

+0

試'ifelse(NCHAR(文件$ hscode1)> = 9,子串(文件$ hscode1,2,9),文件$ hscode1)',一般來說這是邏輯'的nchar(文件$ hscode1) > = 9'不是'nchar(文件$ hscode1> = 9)' – missuse

回答

1

我覺得有一個錯誤。它應該是:

file$hscode2 <- if (nchar(file$hscode1) >= 9) { 

    file$hscode2 <- substr(file$hscode1,2,9) 

} 

書面,你的函數上運行的nchar「文件$ hscode1> = 9」,這是一個布爾值,如果被轉換爲char也只是1個字符,因此條件將始終我認爲這是事實(導致你看到意想不到的結果)。

+0

明白了你的觀點。謝謝! –

0

正如@missuse所示,ifelse()在這裏可以正常工作。

file$hscode2 <- ifelse(nchar(file$hscode1 >= 9), # test 
         substr(file$hscode1, 2, 9), # value if true 
         file$hscode1) # value if false 
+0

謝謝!這工作! –