删除R中列中某些数据点的数字

时间:2017-10-13 11:16:27

标签: r

我有一列数字(字符),其中包含8位数字或9位数字。如果数据点有9位数,我想删掉第一个数字。我正在使用以下命令:

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

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

}

其中数据框为“file”且8/9位数据的列为hscode1,而当为9位字符时丢弃第一个数字的新列为hscode2

然而,我没有得到理想的结果。有什么建议吗?

由于

2 个答案:

答案 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