Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找每个组和每个所有行的百分比,并将它们作为新列添加到dataframe中_R - Fatal编程技术网

查找每个组和每个所有行的百分比,并将它们作为新列添加到dataframe中

查找每个组和每个所有行的百分比,并将它们作为新列添加到dataframe中,r,R,我有下面的数据框,我想添加2个新列。第一个Cases1将具有每年龄组每行病例的百分比,第二个Cases2将具有每行病例的百分比: Cm<-structure(list(`Age group` = c("00-04", "00-04", "05-14", "05-14", "15-24", "15-24", "25-49", "25-49&q

我有下面的数据框,我想添加2个新列。第一个
Cases1
将具有每
年龄组每行
病例的百分比,第二个
Cases2
将具有每行
病例的百分比:

Cm<-structure(list(`Age group` = c("00-04", "00-04", "05-14", "05-14", 
"15-24", "15-24", "25-49", "25-49", "50-64", "50-64", "65-79", 
"65-79", "80+", "80+"), Gender = c("Female", "Male", "Female", 
"Male", "Female", "Male", "Female", "Male", "Female", "Male", 
"Female", "Male", "Female", "Male"), Cases = c(64578, 70518, 
187568, 197015, 414405, 388138, 1342394, 1206168, 792180, 742744, 
400232, 414613, 282268, 198026)), row.names = c(NA, -14L), groups = structure(list(
    `Age group` = c("00-04", "05-14", "15-24", "25-49", "50-64", 
    "65-79", "80+"), .rows = structure(list(1:2, 3:4, 5:6, 7:8, 
        9:10, 11:12, 13:14), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, 7L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

# A tibble: 14 x 3
# Groups:   Age group [7]
   `Age group` Gender   Cases
   <chr>       <chr>    <dbl>
 1 00-04       Female   64578
 2 00-04       Male     70518
 3 05-14       Female  187568
 4 05-14       Male    197015
 5 15-24       Female  414405
 6 15-24       Male    388138
 7 25-49       Female 1342394
 8 25-49       Male   1206168
 9 50-64       Female  792180
10 50-64       Male    742744
11 65-79       Female  400232
12 65-79       Male    414613
13 80+         Female  282268
14 80+         Male    198026

Cm我认为这应该为您解决:

library(dplyr)
Cm %>%
   group_by(`Age group`) %>%
   mutate(Cases1 = Cases/sum(Cases) * 100) %>%
   ungroup %>%
   mutate(Cases2 = Cases/sum(Cases) * 100)
## A tibble: 14 x 5
#   `Age group` Gender   Cases Cases1 Cases2
#   <chr>       <chr>    <dbl>  <dbl>  <dbl>
# 1 00-04       Female   64578   47.8  0.964
# 2 00-04       Male     70518   52.2  1.05 
# 3 05-14       Female  187568   48.8  2.80 
# 4 05-14       Male    197015   51.2  2.94 
# 5 15-24       Female  414405   51.6  6.18 
# 6 15-24       Male    388138   48.4  5.79 
# 7 25-49       Female 1342394   52.7 20.0  
# 8 25-49       Male   1206168   47.3 18.0  
# 9 50-64       Female  792180   51.6 11.8  
#10 50-64       Male    742744   48.4 11.1  
#11 65-79       Female  400232   49.1  5.97 
#12 65-79       Male    414613   50.9  6.19 
#13 80+         Female  282268   58.8  4.21 
#14 80+         Male    198026   41.2  2.96 
库(dplyr)
厘米%>%
分组依据(`Age group`)%>%
变异(案例1=案例/总和(案例)*100)%>%
解组%>%
变异(案例2=案例/总数(案例)*100)
##一个tibble:14x5
#“年龄组”性别病例1病例2
#                  
#1 00-04女64578 47.8 0.964
#2 00-04男70518 52.2 1.05
#3 05-14女187568 48.8 2.80
#4 05-14男197015 51.2 2.94
#5 15-24女性414405 51.6 6.18
#6 15-24男388138 48.4 5.79
#725-49女性134239452.720.0
#8 25-49男1206168 47.3 18.0
#950-64女性79218051.611.8
#10 50-64男742744 48.4 11.1
#11 65-79女性400232 49.1 5.97
#12 65-79男414613 50.9 6.19
#1380+女性28226858.84.21
#14 80+男性198026 41.2 2.96

Related:到目前为止,您尝试了什么?