如何计算行/列的%(在数据框中)

时间:2016-10-17 15:00:40

标签: r

我有这个数据框,我想为每一行计算%(例如)。我想在同一数据帧中转换此数据帧,但仅适用于%

enter image description here

就像这张图片一样:

enter image description here

我该怎么做?

数据:

dat <- data.frame(
  county = c("FRANCIA", "GRECIA", "ITALIA"),
  `310` = c(73, 165, 347),
  `320` = c(13, 80, 118),
  `330` = c(10, 57, 94),
  `340` = c(28, 116, 177),
  check.names = FALSE
)

2 个答案:

答案 0 :(得分:0)

如果您特别想要包含%符号,请尝试使用janitor包中的adorn_crosstab()

library(janitor)
dat %>%
  adorn_crosstab(show_n = FALSE, digits = 0)

   county 310 320 330 340
1 FRANCIA 59% 10%  8% 23%
2  GRECIA 39% 19% 14% 28%
3  ITALIA 47% 16% 13% 24%

如果您想将比例保留为numeric - 等级,请参阅Calculate row-wise proportions

(免责声明:我是这个函数的作者 - 但我认为这是获得理想结果的最快方法)

答案 1 :(得分:0)

基础包,使用prop.table。首先,我们将数据帧转换为矩阵。然后返回使用cbind恢复列Country的数据框。

cbind(Country = dat[, 1], as.data.frame(prop.table(as.matrix(dat[, 2:5]), 1)))

输出:

  Country       310       320        330       340
1 FRANCIA 0.5887097 0.1048387 0.08064516 0.2258065
2  GRECIA 0.3947368 0.1913876 0.13636364 0.2775120
3  ITALIA 0.4714674 0.1603261 0.12771739 0.2404891