【问题标题】:How to calculate the % for Rows / colums (in a dataframe) [duplicate]如何计算行/列的百分比(在数据框中)[重复]
【发布时间】:2016-10-17 15:00:39
【问题描述】:

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

就像这张图片:

我该怎么做?

数据:

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
)

【问题讨论】:

标签: r


【解决方案1】:

如果您特别希望包含 % 符号,请尝试使用管理员包中的 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-class,请参阅Calculate row-wise proportions

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

【讨论】:

  • 感谢大家的帮助! :)
【解决方案2】:

基础包,使用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

【讨论】:

  • 嗨@Marcusson,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 2012-09-05
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多