r - 将唯一的主键应用于数据框中的每个自定义组
问题描述
我有以下数据框:
DAYS7 <- c('Monday','Tuesday','Wednesday','Thursday','Friday', 'Saturday', 'Sunday')
DAYS <- rep(DAYS7, 3, each = 3)
BIN <- c('00_07', '07_18', '18_24')
BIN <- rep(BIN, 21)
A <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1)
B <- c(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1)
DESIRED_OUTPUT <- c(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4)
dataframe <- as.data.frame(cbind(DAYS, BIN, A, B, DESIRED_OUTPUT))
dataframe$DAYS <- as.character(dataframe$DAYS)
dataframe$A <- as.numeric(as.character(dataframe$A))
dataframe$B <- as.numeric(as.character(dataframe$B))
dataframe$DESIRED_OUTPUT <- as.numeric(as.character(dataframe$DESIRED_OUTPUT))
BIN 列有 3 个输出:00_07、07_18、18_24。(基本的想法是我正在分析财务数据。使用这个 bin,我可以看到交易的哪一部分发生在一天内的某个时间间隔内 - 无论是早上时间(0:00 到 7 点之间: 00)、白天(7:00 到 18:00 之间)或晚上(18:00 到 24:00 之间)。
如果是工作日,则A 列中的相应单元格为零。如果是节假日,A 列显示 1。
B列与 A 列基本相同,除了它在每个周末添加前导和尾随 1,因此所有周五晚上 (18:00-24:00) 和周一早上 (00:00-07:00) 也将被标记作为1。
现在,棘手的部分来了。我想将唯一的主键应用于列 B中定义的每个自定义组。所以我想到的是这样的(参见DESIRED_OUTPUT列)。
你对如何在 R 中解决这个问题有什么建议吗?
解决方案
使用基数 R。需要对数据进行排序。
dataframe$PK <- cumsum(diff(c(0, dataframe$B)) == 1) * dataframe$B
推荐阅读
- javascript - 使用 Ajax 进行自动完成搜索操作的缺点?
- cakephp - 如何更改 CakePHP 3 视图中的数据库列显示(标签)?
- mysql - Azure:如何最好地将 SQL 数据库与 MySQL/Web 服务连接起来
- excel - Selenium VBA 在步骤 F8 中运行良好,但在完全 F5 中运行时会跳过一行
- angular - ng packagr 自动生成的路径问题
- javascript - Ajax 发布响应包含 html
- java - 如何从我的工作队列任务中获取结果?
- django - 正确的 DRF 过滤器列表视图端点以按 id 返回多个对象
- jquery - 在页面中初始化许多光滑的轮播
- asp.net - 更新面板影响菜单元素