【问题标题】:How to check if the value matches the one from previous ?th row? (? is dynamic)如何检查该值是否与前第 ? 行中的值匹配? (?是动态的)
【发布时间】:2018-08-29 11:08:03
【问题描述】:

这是我的数据集。 Data in

我想检查带有“潜在原创”的性别是否与带有“潜在重复”的性别匹配。没有指定组,但 1 个重复 + 1 个或更多原创表现得像一个组。

这是我想要的输出(对于重复,它是 NA,因为它正在与自身进行比较)。 Data out

感谢您的帮助。谢谢。

【问题讨论】:

  • 请提供您尝试过的代码

标签: loops match conditional-statements lag seq


【解决方案1】:

感谢 Rahul 对此进行调查。这是我尝试过的,我认为它有效。逻辑是先为 Duplicate 和 Original 的每个块创建 seq#,然后拉取对应距离的 lag 值。

 library(data.table)
 setDT(df)[, counter := seq_len(.N), by = list(cumsum(Status == "Potential 
 Duplicate"))]

for (i in 1:nrow(df)) {
  if (df$Status[i]=="Potential Duplicate") {
   df$Gender_LAG[i] <-df2$Gender[i]
                                             } 
   else {
     df$Gender_LAG[i]<-df2$Gender[i-df2$counter[i]+1]
        }
                        }

谢谢。 期待看到其他选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-31
    • 2019-08-25
    • 2010-12-08
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多