r - R data.table 按条件分组的最后一行的二进制值
问题描述
我有这样的数据:
library(data.table)
id <- c("1232","1232","1232","4211","4211","4211")
conversion <- c(0,0,0,1,1,1)
DT <- data.table(id, conversion)
id date conversion
1232 2018-01-01 0
1232 2018-01-03 0
1232 2018-01-04 0
4211 2018-04-01 1
4211 2018-04-04 1
4211 2018-04-06 1
我想根据 id 行仅为每个组的最后一行创建一个二进制值。仅当组的转换为 1 时,二进制才会为 1。
id date conversion lastconv
1232 2018-01-01 0 0
1232 2018-01-03 0 0
1232 2018-01-04 0 0
4211 2018-04-01 1 0
4211 2018-04-04 1 0
4211 2018-04-06 1 1
我尝试在 data.table 中使用一些带有“mult”参数的示例,但只返回了错误。
DT[unique(id), lastconv := 1, mult = "last"]
解决方案
对于每个 id,检查行号是否是组中的最后一个行号,以及 'conversion' 是否为 1。将逻辑结果转换为整数。
DT[ , lastconv := as.integer(.I == .I[.N] & conversion == 1), by = id]
推荐阅读
- c - 为什么 Valgrind 会产生这个错误信息?
- javascript - CKEditor 5 中如何在模态中使用
- c# - 页面刷新后如何在浏览器中保存弹出对话?
- okta-signin-widget - sessionCookieRedirect 调用后获取 okta 欢迎页面
- rest - Delphi REST 和 Unicode 字符不存在映射
- python - 博客类别 Slugify 在 Django 中不起作用
- java - 在 Javafx 中更改线条的颜色
- java - 无法在 spring boot jar 中运行命令 cucumber - 未找到后端。请确保您的 CLASSPATH 上有一个后端模块
- docker - QueryTree 测试连接返回 404 not found
- python - 如何在python中将整数月转换为年