因子中的重复低频值
duplicate low frequency values in a factor
我需要复制那些在名为 groups
的因子变量中频率小于 500 的水平。
> head(groups)
[1] 0000000 1000000 1000000 1000000 0000000 0000000
75 Levels: 0000000 0000001 0000010 0000100 0000110 0001000 0001010 0001100 0001110 0010000 0010010 0010100 0010110 ... 1111110
例如:
> table(group)
group
0000000 0000001 0000010 0000100 0000110 0001000 0001010 0001100 0001110 0010000 0010010 0010100 0010110 0011000 0011010 0011100
58674 6 1033 654 223 1232 31 222 17 818 132 32 15 42 9 9
0011110 0100000 0100001 0100010 0100100 0100101 0100110 0101000 0101010 0101100 0101110 0110000 0110010 0110100 0110110 0111000
1 10609 1 487 64 1 58 132 11 12 3 142 27 9 7 11
0111010 0111100 0111110 1000000 1000001 1000010 1000011 1000100 1000101 1000110 1001000 1001001 1001010 1001100 1001110 1010000
5 1 2 54245 10 1005 1 329 1 138 573 1 31 71 11 969
1010010 1010100 1010110 1011000 1011010 1011100 1011110 1100000 1100001 1100010 1100011 1100100 1100110 1101000 1101010 1101011
147 29 21 63 15 10 4 14161 6 770 1 142 96 260 23 1
1101100 1101110 1110000 1110001 1110010 1110100 1110110 1111000 1111010 1111100 1111110
34 16 439 2 103 13 26 36 13 8 5
组 0000001
、0000110
、0001010
、0001100
...必须重复最多 500 个。
理想的情况是 "sample balanced data" 的 groups
重复那些级别通常小于 500 并惩罚其余的(级别超过 500 频率)直到达到 500。
我们可以在 'group' 的 levels
上使用 rep
以获得所需的 'n'
factor(rep(levels(group), each = n))
如果我们还需要使用 table
结果
factor(rep(levels(group), table(group) + n-table(group)) )
或 pmax
factor(rep(levels(group), pmax(n, table(levels(group)))))
数据
set.seed(24)
group <- factor(sample(letters[1:6], 3000, replace = TRUE))
n <- 500
我需要复制那些在名为 groups
的因子变量中频率小于 500 的水平。
> head(groups)
[1] 0000000 1000000 1000000 1000000 0000000 0000000
75 Levels: 0000000 0000001 0000010 0000100 0000110 0001000 0001010 0001100 0001110 0010000 0010010 0010100 0010110 ... 1111110
例如:
> table(group)
group
0000000 0000001 0000010 0000100 0000110 0001000 0001010 0001100 0001110 0010000 0010010 0010100 0010110 0011000 0011010 0011100
58674 6 1033 654 223 1232 31 222 17 818 132 32 15 42 9 9
0011110 0100000 0100001 0100010 0100100 0100101 0100110 0101000 0101010 0101100 0101110 0110000 0110010 0110100 0110110 0111000
1 10609 1 487 64 1 58 132 11 12 3 142 27 9 7 11
0111010 0111100 0111110 1000000 1000001 1000010 1000011 1000100 1000101 1000110 1001000 1001001 1001010 1001100 1001110 1010000
5 1 2 54245 10 1005 1 329 1 138 573 1 31 71 11 969
1010010 1010100 1010110 1011000 1011010 1011100 1011110 1100000 1100001 1100010 1100011 1100100 1100110 1101000 1101010 1101011
147 29 21 63 15 10 4 14161 6 770 1 142 96 260 23 1
1101100 1101110 1110000 1110001 1110010 1110100 1110110 1111000 1111010 1111100 1111110
34 16 439 2 103 13 26 36 13 8 5
组 0000001
、0000110
、0001010
、0001100
...必须重复最多 500 个。
理想的情况是 "sample balanced data" 的 groups
重复那些级别通常小于 500 并惩罚其余的(级别超过 500 频率)直到达到 500。
我们可以在 'group' 的 levels
上使用 rep
以获得所需的 'n'
factor(rep(levels(group), each = n))
如果我们还需要使用 table
结果
factor(rep(levels(group), table(group) + n-table(group)) )
或 pmax
factor(rep(levels(group), pmax(n, table(levels(group)))))
数据
set.seed(24)
group <- factor(sample(letters[1:6], 3000, replace = TRUE))
n <- 500