【问题标题】:Create a new columns in R在 R 中创建一个新列
【发布时间】:2021-07-06 16:33:10
【问题描述】:

我正在对一些意大利地区进行分析。我有一个类似于以下的数据集:

mydata <- data.frame(date= c(2020,2021,2020,2021,2020,2021),
                 Region= c('Sicilia','Sicilia','Sardegna','Sardegna','Campania','Campania'),
                 Number=c(20,30,50,70,90,69) )

现在我必须创建两个新列。第一个(称为“总人口”)包含每个区域的固定数字(例如,西西里岛的每一行将有一个“总人口”= 250)。第二列包含“数字”列的值与“总人口”的相应值之间的百分比比率(例如,对于西西里岛,该值将是 20/250 等等)。 我希望我能解释清楚,非常感谢你

【问题讨论】:

  • “总人口”的数值从何而来?
  • 从他所说的来看,例如单个记录的总和。西西里岛等
  • 啊。他的总数不等于 250。抱歉,太快了
  • 这个值 250 是否对所有区域都相等?如果不是,你能解释一下如何计算它吗?
  • 对不起,我表达得不好。数字人口是该地区的人口,是一个固定数字(例如,西西里岛有大约 500 万居民,坎帕尼亚有 580 万,撒丁岛有 164 万;为简单起见,我输入了 250)。百分比表示人口的百分比。谢谢

标签: r dataframe percentage


【解决方案1】:

也许像这样:



mydata %<>% group_by( Region ) %>%
    mutate(
        `Total Population` = sum(Number),
        `Ratio of Total` = sprintf( "%.1f%%",100 * Number / sum(Number)) )


我的数据现在是:

> mydata
# A tibble: 6 x 5
# Groups:   Region [3]
   date Region   Number `Total Population` `Ratio of Total`
  <dbl> <chr>     <dbl>              <dbl> <chr>           
1  2020 Sicilia      20                 50 40.0%           
2  2021 Sicilia      30                 50 60.0%           
3  2020 Sardegna     50                120 41.7%           
4  2021 Sardegna     70                120 58.3%           
5  2020 Campania     90                159 56.6%           
6  2021 Campania     69                159 43.4%         

【讨论】:

  • 我在发布后发现总数来自总数的假设,例如西西里岛的总数不等于 250,只有 50。
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多