任何人都知道匹配和分类R中数字前n位的好方法吗?
例如,
123451
123452
123461
123462
在这种情况下,如果我们匹配前n = 1-4个数字,我们将得到所有相同的组。如果我们匹配n = 5位数,我们将得到2组。
我想通过使数字向量成为一个字符向量来进行此操作,将其拆分,以便每个数字都可以被截断为n个数字,并根据这些数字进行匹配;但是,我有很多数字,似乎必须有一个更好的方法来排序R中数字的前n位数。任何想法?
谢谢!
答案 0 :(得分:1)
这是一个不涉及转换为字符的矢量化解决方案:
nums <- c(123451,
123452,
123461,
123462)
firstDigits <- function(x, n) {
ndigits <- floor(log10(x)) + 1
floor(x / 10^(ndigits - n))
}
factor(firstDigits(nums, 4))
## [1] 1234 1234 1234 1234
## Levels: 1234
factor(firstDigits(nums, 5))
## [1] 12345 12345 12346 12346
## Levels: 12345 12346
factor(firstDigits(nums, 6))
## [1] 123451 123452 123461 123462
## Levels: 123451 123452 123461 123462