组对组划分

2024-03-13

数据集:

  date     bal      
1/31/2013  10   
1/31/2013  11  
1/31/2013  12  
1/31/2013  13   
1/31/2013  14 
2/28/2013  20   
2/28/2013  30  
2/28/2013  40  
2/28/2013  50   
2/28/2013  60    
3/30/2013  10  
3/30/2013  11     
3/30/2013  12   
3/30/2013  13    
3/30/2013  15    

使用的代码:

bb <- read.csv("abc.csv", stringsAsFactors=T, header=T)
bb
library(dplyr)

new_data <- bb %>% 
   mutate(D = (bal) / lag(bal[1:5])) %>%
   data.frame()
new_data

我们划分第 2 组(日期 - 2013 年 2 月 28 日的第二行 = 30)/(第 1 组 - 2013 年 1 月 31 日的第一行 = 10) 即:30 / 10 = 3.000、40/11 = 3.63、50/12 = 4.16 等等。

从上面的代码得到的输出:

     date     bal        D
1   1/31/2013  10       NA
2   1/31/2013  11 1.100000
3   1/31/2013  12 1.090909
4   1/31/2013  13 1.083333
5   1/31/2013  14 1.076923
6   2/28/2013  20       NA
7   2/28/2013  30 3.000000
8   2/28/2013  40 3.636364
9   2/28/2013  50 4.166667
10  2/28/2013  60 4.615385
11  3/30/2013  10       NA
12  3/30/2013  11 1.100000
13  3/30/2013  12 1.090909
14  3/30/2013  13 1.083333
15  3/30/2013  15 1.153846

现在这里的问题是:

第一组保留为参考 = 除数,即 10, 11,12,13 这意味着以下所有日期组(bal)都将除以第一个参考组。

我们希望每次除数应按下一组日期递增,并与下面的组(股息)相同,依此类推。

     date     bal        D           
1   1/31/2013  10       NA         
2   1/31/2013  11       NA
3   1/31/2013  12       NA  
4   1/31/2013  13       NA 
5   1/31/2013  14       NA
6   2/28/2013  20       NA
7   2/28/2013  30 3.000000       - 30 / 10 = 3
8   2/28/2013  40 3.636364       - 40 / 11 = 3.63  
9   2/28/2013  50 4.166667       - 50 / 12 = 4.16
10  2/28/2013  60 4.615385       - 60 / 13 = 4.61
11  3/30/2013  10       NA          NA
12  3/30/2013  11 1.100000       - 11 / 20 = 0.55 
13  3/30/2013  12 1.090909       - 12 / 30 = 0.4
14  3/30/2013  13 1.083333       - 13 / 40 = 0.325 
15  3/30/2013  15 1.153846       - 15 / 50 = 0.3

我期待上面的输出。


DF %>%
  group_by(g1=seq_along(bal) %% 5) %>%
  mutate(denominator=lag(bal)) %>%
  ungroup() %>%
  group_by(g2=(seq_along(bal) - 1) %/% 5) %>%
  mutate(denominator=lag(denominator),
         D=bal / denominator) %>%
  ungroup()

# # A tibble: 15 x 6
#         date   bal    g1 denominator    g2        D
#       <fctr> <int> <dbl>       <int> <dbl>    <dbl>
#  1 1/31/2013    10     1          NA     0       NA
#  2 1/31/2013    11     2          NA     0       NA
#  3 1/31/2013    12     3          NA     0       NA
#  4 1/31/2013    13     4          NA     0       NA
#  5 1/31/2013    14     0          NA     0       NA
#  6 2/28/2013    20     1          NA     1       NA
#  7 2/28/2013    30     2          10     1 3.000000
#  8 2/28/2013    40     3          11     1 3.636364
#  9 2/28/2013    50     4          12     1 4.166667
# 10 2/28/2013    60     0          13     1 4.615385
# 11 3/30/2013    10     1          NA     2       NA
# 12 3/30/2013    11     2          20     2 0.550000
# 13 3/30/2013    12     3          30     2 0.400000
# 14 3/30/2013    13     4          40     2 0.325000
# 15 3/30/2013    15     0          50     2 0.300000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组对组划分 的相关文章

  • 如何在 R 中压缩多个 CSV 文件?

    我正在尝试在 R 中压缩多个 CSV 文件 下面是供参考的代码 Create two dataframes using inbuilt datasets for reproducible code df1 lt head mtcars df
  • 将“dplyr::across”与具有多个参数的函数一起使用

    我想知道是否有办法使用dplyr across一个需要多个参数的函数 如果没有 如何执行以下操作dplyr tidyverse library dplyr create a dataframe df lt structure list x1
  • 将时间值转换为数字,同时保留时间特征

    我有一个数据集 其中包含不同事件发生的间隔时间 我想要做的是将数据转换为数字向量 以便更容易操作和运行摘要 制作图表等 同时保持其时间特征 这是我的数据片段 data lt c 03 31 12 17 16 29 09 52 04 01 0
  • 如何将曲线拟合到直方图

    我已经探讨了有关该主题的类似问题 但在我的直方图上生成漂亮的曲线时遇到了一些麻烦 我知道有些人可能会认为这是重复的 但我目前还没有找到任何可以帮助解决我的问题的东西 尽管数据在此处不可见 但这里是我使用的一些变量 以便您可以在下面的代码中看
  • 通过 R 连接到 Azure SQL

    下面的代码允许我通过 R 连接到 Azure SQL 服务器 但是 我只能访问 主 数据库 而不能访问我在下面创建的两个数据库 表格显示为空白 有什么想法吗 谢谢 library RODBC library dplyr library DB
  • 模糊匹配两个字符串 ur r

    我有两个向量 每个向量都包含一系列字符串 例如 V1 c pen document folder warn V2 c pens copy folder warning 我需要找出哪两个最匹配 我直接使用编辑距离 但这还不够好 就我而言 钢笔
  • 移动 sf 对象的经度

    我有一张国家地图 sf 对象 我想改变俄罗斯东部的经度 以便它不与俄罗斯其他地区隔离 看图片 https i stack imgur com NBjyK jpg 我找到了后端代码st shift longitude https github
  • 如何根据一个值过滤远程表?

    我正在做一个filter using in 但 dplyr 翻译查询的方式似乎不正确 事实上 in 运算符对于多个值可以正常工作 但当仅存在单个元素时则不行 在我最初的场景中 过滤值是动态的 因此我希望有一个在这两种情况下都有效的函数 my
  • 使用Shiny和Shinydashboard时如何使图标大小一致?

    我在闪亮的应用程序中添加可点击的图标以显示弹出信息框 请参阅以下屏幕截图和代码示例 我的策略是将我的文本和代码包装起来actionLink in the HTML功能 这效果很好 然而 图标的大小是由关联的大小决定的 我想知道是否可以使所有
  • 替换 R 中内置函数的定义?

    sparcl 包使用标准 stat 包中的 kmeans 函数 我想让它使用我自己的 kmeans 实现 一种方法是编辑 sparcl 包本身中的代码 我宁愿避免这种情况 因为它会很混乱 而且我不确定如何在 R 中安装编辑过的代码 不幸的是
  • 按列名称索引拆分数据框

    这是先前问题的变体 df lt data frame matrix rnorm 9 9 ncol 9 names df lt c c 1 d 1 e 1 a p b p c p 1 o1 2 o1 3 o1 我想按下划线 后面的column
  • 错误消息:fn(x, ...) 中的错误:已过时的 VtV 不是正定的

    我正在尝试使用 lmer 函数创建一个最小足够模型 我的模型已配对 尺寸 尝试 状态 随机因素 as logical Mated as numeric Size as factor Attempts as factor Status 这些都
  • 检查远程错误时出错 (val):5 个节点产生错误:未找到对象

    我尝试使用并行处理 parLapply 进行 10 倍交叉验证并估计联合模型的模型性能 我试图找出为什么我收到错误消息 checkForRemoteErrors val 中的错误 五个节点产生错误 未找到对象 Week 代码如下 Valid
  • 重塑错误 - 无效的“row.names”长度

    我有以下数据库 宽格式 st all 其中有两个我希望重塑的变量 P 和 PLC 主题的 ID 是 g id g id study condition sample PLC1 PLC2 PLC3 PLC4 PLC5 PLC6 PLC7 PL
  • dplyr 中每组的 cumsum

    我开始享受dplyr但我陷入了一个用例 我希望能够申请cumsum数据框中的每个组与包 但我似乎无法正确处理 对于演示数据框 我生成了以下数据 set seed 123 len 10 dates as Date 2014 01 01 1 l
  • RStudio 服务器未启动

    过去几个月我一直在远程 RStudio 服务器上工作 没有任何问题 今天 我使用此命令重新启动了 rstudio 服务器 sudo rstudio server restart 此后 我无法通过浏览器访问服务器 它继续等待 我用这个检查了状
  • 如何在变成因子的变量中保留原始值?

    这是一些工作代码来说明我的问题 Categorical variable recorded as numeric integer df1 lt data frame group c 1 2 3 9 3 2 9 1 9 3 2 我有一个分类变
  • 条件格式 DT 中的样式

    我想根据 B 列中的值对 A 列中的行进行着色 下面的代码基于小插图中的示例Link https rstudio github io DT 010 style html 但仅显示两列的条件 mobile number by mobile f
  • OpenBUGS:伯努利分布中缺失值

    我正在尝试通过 R R2OpenBUGS 使用 OpenBUGS 将观察 时间 建模为随机变量 如果所有观察时间都可用 没有 NA 则一切正常 但如果我将其中一个时间设置为 NA 则什么也不会发生 我使用 WinBUGS 测试了相同的代码
  • 泛化 R %in% 运算符以匹配元组

    前几天我花了一段时间寻找一种方法来检查行向量是否包含在 R 中的某些行向量集中 基本上 我想概括 in 运算符来匹配元组而不是向量中的每个条目 例如 我想要 row vec c A 3 row vec 1 A 3 data set rbin

随机推荐