kat*_*tus 1 r percentage dplyr tidyr
假设我有一个像这样的列表(以 tbl 格式):
Type.1 count averageTotal averageHP averageAttack averageDefense averageSpAtk averageSp..Def averageSpeed
(fctr) (int) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1 Bug 69 378.9275 56.88406 70.97101 70.72464 53.86957 64.79710 61.68116
2 Dark 31 445.7419 66.80645 88.38710 70.22581 74.64516 69.51613 76.16129
3 Dragon 32 550.5312 83.31250 112.12500 86.37500 96.84375 88.84375 83.03125
4 Electric 44 443.4091 59.79545 69.09091 66.29545 90.02273 73.70455 84.50000
5 Fairy 17 413.1765 74.11765 61.52941 65.70588 78.52941 84.70588 48.58824
Run Code Online (Sandbox Code Playgroud)
如果我想计算平均总列中每列的百分比(每行),我将如何进行?
具体来说,我想要的结果是这样的:
Type.1 count averageTotal averageHP averageAttack averageDefense averageSpAtk averageSp..Def averageSpeed
(fctr) (int) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1 Bug 69 378.9275 15.02% 18.73% 18.73% 14.21% 17.11% 16.29%
Run Code Online (Sandbox Code Playgroud)
这是基 R 中的一个简单方法:
df[, 4:9] <- df[, 4:9] / df[[3]]
Run Code Online (Sandbox Code Playgroud)
返回
df
Type.1 count averageTotal averageHP averageAttack averageDefense averageSpAtk averageSp..Def averageSpeed
1 Bug 69 378.9275 0.1501186 0.1872944 0.1866443 0.1421633 0.1710013 0.1627783
2 Dark 31 445.7419 0.1498770 0.1982921 0.1575481 0.1674627 0.1559560 0.1708641
3 Dragon 32 550.5312 0.1513311 0.2036669 0.1568939 0.1759096 0.1613782 0.1508202
4 Electric 44 443.4091 0.1348539 0.1558175 0.1495131 0.2030241 0.1662225 0.1905689
5 Fairy 17 413.1765 0.1793850 0.1489180 0.1590262 0.1900626 0.2050114 0.1175968
Run Code Online (Sandbox Code Playgroud)
数字指的是列位置,因此第三列将列分为四到九列。这是按比例而不是百分比报告的,但你可以很容易地解决这个问题
df[, 4:9] <- round(100 * df[, 4:9] / df[[3]], 2)
Run Code Online (Sandbox Code Playgroud)
数据
df <- read.table(header=TRUE, text=" Type.1 count averageTotal averageHP averageAttack averageDefense averageSpAtk averageSp..Def averageSpeed
1 Bug 69 378.9275 56.88406 70.97101 70.72464 53.86957 64.79710 61.68116
2 Dark 31 445.7419 66.80645 88.38710 70.22581 74.64516 69.51613 76.16129
3 Dragon 32 550.5312 83.31250 112.12500 86.37500 96.84375 88.84375 83.03125
4 Electric 44 443.4091 59.79545 69.09091 66.29545 90.02273 73.70455 84.50000
5 Fairy 17 413.1765 74.11765 61.52941 65.70588 78.52941 84.70588 48.58824")
Run Code Online (Sandbox Code Playgroud)