我想计算两行之间的百分比比率,并以重复的方式计算每两行的百分比.例如,使用我当前的数据集:我在第Aantal、116和122列的行中有两个值.计算结果为116/total=0.48和122/total=0.51.我想用一些代码为每2行提供一次.我添加了一个具有所需结果的数据集(该数据集仅显示"Molenpolder"值,但我希望在Locatie列中同时显示这两个值).

我当前的数据集:

structure(list(Datum = structure(c(18748, 18748, 18779, 18779, 
18809, 18809, 18809, 18809, 18840, 18840, 18840, 18840, 18871, 
18871, 18871, 18871, 18901, 18901, 18901, 18901, 18932, 18932, 
18932, 18932, 18962, 18962, 18993, 18993, 18993, 18993, 19024, 
19024, 19052, 19052), class = "Date"), Locatie = c("Molenpolder", 
"Molenpolder", "Molenpolder", "Molenpolder", "Berkenwoude", "Berkenwoude", 
"Molenpolder", "Molenpolder", "Berkenwoude", "Berkenwoude", "Molenpolder", 
"Molenpolder", "Berkenwoude", "Berkenwoude", "Molenpolder", "Molenpolder", 
"Berkenwoude", "Berkenwoude", "Molenpolder", "Molenpolder", "Berkenwoude", 
"Berkenwoude", "Molenpolder", "Molenpolder", "Berkenwoude", "Berkenwoude", 
"Berkenwoude", "Berkenwoude", "Molenpolder", "Molenpolder", "Berkenwoude", 
"Berkenwoude", "Molenpolder", "Molenpolder"), Geslacht = c("Man", 
"Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", 
"Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", 
"Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", 
"Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", 
"Vrouw"), Aantal = c(116, 122, 4103.26419354839, 6953.40967741935, 
9423, 9341.29, 14824.8675932241, 16933.0370786706, 17820.274105332, 
15154.2391914913, 31680.8030521092, 22602.5941191067, 13258.542809897, 
12760.9674586383, 28192.59, 23135.1, 3000.58, 2670.27, 8948.49, 
9425.45, 67, 78, 265.07, 285.83, 89, 125, 30, 41, 34, 55, 154.86, 
254.78, 113.61, 167.15)), class = c("grouped_df", "tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -34L), groups = structure(list(
    Datum = structure(c(18748, 18779, 18809, 18809, 18840, 18840, 
    18871, 18871, 18901, 18901, 18932, 18932, 18962, 18993, 18993, 
    19024, 19052), class = "Date"), Locatie = c("Molenpolder", 
    "Molenpolder", "Berkenwoude", "Molenpolder", "Berkenwoude", 
    "Molenpolder", "Berkenwoude", "Molenpolder", "Berkenwoude", 
    "Molenpolder", "Berkenwoude", "Molenpolder", "Berkenwoude", 
    "Berkenwoude", "Molenpolder", "Berkenwoude", "Molenpolder"
    ), .rows = structure(list(1:2, 3:4, 5:6, 7:8, 9:10, 11:12, 
        13:14, 15:16, 17:18, 19:20, 21:22, 23:24, 25:26, 27:28, 
        29:30, 31:32, 33:34), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -17L), .drop = TRUE))

预期结果的数据集:

structure(list(Datum = structure(c(18748, 18748, 18779, 18779, 
18809, 18809, 18840, 18840, 18871, 18871, 18901, 18901, 18932, 
18932, 18993, 18993, 19052, 19052), class = "Date"), Locatie = c("Molenpolder", 
"Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", 
"Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", 
"Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", 
"Molenpolder", "Molenpolder"), Geslacht = c("Man", "Vrouw", "Man", 
"Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", 
"Vrouw", "Man", "Vrouw", "Man", "Vrouw", "Man", "Vrouw"), Aantal = c(116, 
122, 4103.26419354839, 6953.40967741935, 14824.8675932241, 16933.0370786706, 
31680.8030521092, 22602.5941191067, 28192.59, 23135.1, 8948.49, 
9425.45, 265.07, 285.83, 34, 55, 113.61, 167.15), Percentages = c(0.487394957983193, 
0.512605042016807, 0.362924631908121, 0.637075368091879, 0.459214273485728, 
0.540785726514272, 0.565716319029836, 0.434283680970164, 0.576064260390234, 
0.423935739609766, 0.47624478865361, 0.52375521134639, 0.46601956825594, 
0.53398043174406, 0.388888888888889, 0.611111111111111, 0.46919657033979, 
0.53080342966021)), class = c("grouped_df", "tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -18L), groups = structure(list(
    Datum = structure(c(18748, 18779, 18809, 18840, 18871, 18901, 
    18932, 18993, 19052), class = "Date"), Locatie = c("Molenpolder", 
    "Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder", 
    "Molenpolder", "Molenpolder", "Molenpolder", "Molenpolder"
    ), .rows = structure(list(1:2, 3:4, 5:6, 7:8, 9:10, 11:12, 
        13:14, 15:16, 17:18), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -9L), .drop = TRUE))

推荐答案

df %>%
  group_by(Datum,Locatie) %>%
  mutate(Percentages = Aantal/sum(Aantal))

   Datum      Locatie     Geslacht Aantal Percentages
   <date>     <chr>       <chr>     <dbl>       <dbl>
 1 2021-05-01 Molenpolder Man        116        0.487
 2 2021-05-01 Molenpolder Vrouw      122        0.513
 3 2021-06-01 Molenpolder Man       4103.       0.371
 4 2021-06-01 Molenpolder Vrouw     6953.       0.629
 5 2021-07-01 Berkenwoude Man       9423        0.502
 6 2021-07-01 Berkenwoude Vrouw     9341.       0.498
 7 2021-07-01 Molenpolder Man      14825.       0.467
 8 2021-07-01 Molenpolder Vrouw    16933.       0.533
 9 2021-08-01 Berkenwoude Man      17820.       0.540
10 2021-08-01 Berkenwoude Vrouw    15154.       0.460
# ... with 24 more rows

R相关问答推荐

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

使用case_match()和char数组重新编码值

在另一个函数中调用ggplot2美学

如何得到R中唯一的组合群?

删除具有相同标题的tabPanel(shinly)

如何写商,水平线,在一个单元格的表在R

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

展开对数比例绘图的轴(添加填充)

使用R中的dist()迭代ID匹配的欧几里德距离

我如何go 掉盒子图底部的数字?

正则表达式在第二个管道和第二个T之后拆分R中的列

如何平滑或忽略R中变量的微小变化?

R -基线图-图形周围的阴影区域

自定义交互作用图的标签

主题(Legend.key=Element_RECT(Fill=&Quot;White&Quot;))不起作用

随机将数据帧中特定列上的某些行设置为NA

如何将EC50值绘制在R中的剂量-react 曲线上?

将y轴格式更改为R中的百分比

使用nls()函数的非线性模型的半正态图

用从先前非NA值开始的递增序列替换NA值