【问题标题】:Return 0 to second instance of duplicate返回 0 到重复的第二个实例
【发布时间】:2019-10-15 09:48:05
【问题描述】:

我有一个与以下类似的数据集:

A  B   C 
1  10  5 
1  20  1
2  30  1
2  30  1

我想添加一个返回 1 的列,直到我们遇到 A 和 B 的副本,当我需要返回 0 时,但仅适用于第二个实例,所以:

A  B   C  D
1  10  5  1
1  20  1  1
2  30  1  1
2  30  1  0

任何帮助表示赞赏。

【问题讨论】:

    标签: r dataframe duplicates


    【解决方案1】:

    一个选项是

    df$D <- as.integer(!duplicated(df[c("A", "B")]))
    df$D
    #[1] 1 1 1 0
     
    

    【讨论】:

      【解决方案2】:

      只是与library(dplyr) 的涂鸦:

      df %>% group_by(A,B) %>% mutate(D = +((1:n())==1))
      

      或者如果您希望它为零“仅适用于第二个实例”,这意味着第三个实例也是一个,那么以下工作:

      df %>% group_by(A,B) %>% mutate(D = +!((1:n())==2))
      

      在示例中,您的重复项不仅适用于 A 和 B,还适用于 C。如果确实如此,您可以使用group_by_all 而不是group_by(A,B)。

      【讨论】:

        猜你喜欢
        • 2018-09-05
        • 2020-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        相关资源
        最近更新 更多