我有一个data.table
看起来如下:
x, y, sum(count)
1, 1, 3
1, 2, 7
1, 3, 8
2, 1, 4
2, 2, 3
2, 3, 10
Run Code Online (Sandbox Code Playgroud)
等等.它的关键是x
和y
我做了sum
一个count
专栏.我想通过x的值将其分解为百分比,以便它变为:
x, y, percentage(counts)
1, 1, 16.7
1, 2, 38.9
1, 3, 44.4
2, 1, 23.5
2, 2, 17.6
2, 3, 58.8
Run Code Online (Sandbox Code Playgroud)
这样每个x
值的总百分比总计为100%.我正在使用data.table
包这样做.预先感谢您的帮助.
我不太明白data.table
已经发布的解决方案,所以我会这样做(我会更改列的名称,没有括号,以避免大量的列名引号(!)):
dt[ , `percentage(counts)` := `sum(count)` / sum( `sum(count)` ) * 100 , by = "x" ]
# x y sum(count) percentage(counts)
#1: 1 1 3 16.66667
#2: 1 2 7 38.88889
#3: 1 3 8 44.44444
#4: 2 1 4 23.52941
#5: 2 2 3 17.64706
#6: 2 3 10 58.82353
Run Code Online (Sandbox Code Playgroud)