我有一列数字(字符),其中包含8位数字或9位数字。如果数据点有9位数,我想删掉第一个数字。我正在使用以下命令:
file$hscode2 <- if (nchar(file$hscode1 >= 9)) {
file$hscode2 <- substr(file$hscode1,2,9)
}
其中数据框为“file”且8/9位数据的列为hscode1,而当为9位字符时丢弃第一个数字的新列为hscode2
然而,我没有得到理想的结果。有什么建议吗?
由于
答案 0 :(得分:1)
我认为有一个错误。它应该是:
file$hscode2 <- if (nchar(file$hscode1) >= 9) {
file$hscode2 <- substr(file$hscode1,2,9)
}
如上所述,您的函数在&#34;文件$ hscode1&gt; = 9&#34;上运行nchar;这是一个布尔值,如果转换为char只会是1个字符,因此我认为条件总是如此(导致您看到的意外结果)。
答案 1 :(得分:0)
根据@missuse的建议,ifelse()
在这里可以正常工作。
file$hscode2 <- ifelse(nchar(file$hscode1 >= 9), # test
substr(file$hscode1, 2, 9), # value if true
file$hscode1) # value if false