我有一个由字符“a”或“g”组成的向量,我想根据频率将它们转换为整数。即出现频率更高的字符应编码为0,另一个字符编码为1。例如:
set.seed(17)
x = sample(c('g', 'a'), 10, replace=T)
x
# [1] "g" "a" "g" "a" "g" "a" "g" "g" "a" "g"
x[x == names(which.max(table(x)))] = 0
x[x != 0] = 1
x
# [1] "0" "1" "0" "1" "0" "1" "0" "0" "1" "0"
这个方法是可行的,但我想知道是否有更高效的方式。
(我们不必考虑50%-50%的情况,因为在我们的研究中它不应该发生。)
data.table
中的%chin%
(仅适用于字符向量)比%in%
和==
更快。因此,使用x %chin% "a"
可以稍微提高速度。 - Arun