r - 为 R 中的连续 TRUE 创建新列
问题描述
如果连续获胜的次数为 2、3 等,我想创建新的列,将 TRUE。所以我希望第 3、6、7、8 行在名为“twoconswins”的新列和第 7、8 行中为 TRUE在一个名为“threeconswins”等的新列中是正确的。这样做的最佳方法是什么?
> id date team teamscore opponent opponentscore home win
>9 9 2005-10-05 DET 5 STL 1 1 TRUE
>38 38 2005-10-09 DET 6 CAL 3 1 TRUE
>48 48 2005-10-10 DET 2 VAN 4 1 FALSE
>88 88 2005-10-17 DET 3 SJS 2 1 TRUE
>110 110 2005-10-21 DET 3 ANA 2 1 TRUE
>148 148 2005-10-27 DET 5 CHI 2 1 TRUE
>179 179 2005-11-01 DET 4 CHI 1 1 TRUE
>194 194 2005-11-03 DET 3 EDM 4 1 FALSE
>212 212 2005-11-05 DET 1 PHO 4 1 FALSE
解决方案
我假设第 1 行应该是标题,所以实际上第 2、5、6 和 7 行对于“twoconswins”应该评估为 TRUE,而第 6 行和第 7 行对于“threeconswins”应该评估为 TRUE。
你可以这样做:
library(data.table)
df$twoconswins <- (df$win & shift(df$win, 1, NA)) == TRUE
df$threeconswins <- (df$win & shift(df$win, 1, NA) & shift(df$win, 2, NA)) == TRUE
我认为这可能会更加矢量化,特别是如果连续 50 次获胜也是可能的,并且您也想为此创建列。
推荐阅读
- spring - JpaRepository 中的 nativeQuery true/false 之间是否存在性能差异?
- javascript - 添加到对象 JSDOC 的动态元素
- postgresql - 提高 PostgreSQL 中的存储过程性能
- python - 将包含串行初始化的 python 脚本导入烧瓶应用程序
- html - 我想在我的 HTML 代码中实现一个 Youtube 视频
- asynchronous - 为什么@Asynchronous 和 Future 类不起作用
- jupyter-lab - 为笔记本设置默认工作目录而不更改源目录
- python - 从其他数据框中查找值并分配给原始数据框
- wordpress - 如何在 Wordpress 后端/编辑产品页面上禁用特定插件
- java - JBoss 上的 JBPM 安装抛出 NoClassDefFoundError: org/apache/log4j/Category