【问题标题】:How to assign values using duplicates and other columns as reference in R?如何使用重复项和其他列作为 R 中的参考来分配值?
【发布时间】:2022-10-01 10:35:57
【问题描述】:

我的数据如下所示:

data <- data.frame(grupoaih = c(\"09081997\", \"13122006\", \"09081997\", \"22031969\"),
                   NMM_PROC_BR = c(1, 1, 0, 1),
                   NMM_CID = c(0, 1, 1, 0),
                   CPAV_PROC_BR = c(0, 0, 0, 1),
                   CPAV_CID = c(1, 1, 0, 1))

当 \"grupoaih\" 重复时,如何分配值 1 以便其他 4 个变量像这样填充:

data2 <- data.frame(grupoaih = c(\"09081997\", \"13122006\", \"09081997\", \"22031969\"),
                   NMM_PROC_BR = c(1, 1, 1, 1),
                   NMM_CID = c(1, 1, 1, 0),
                   CPAV_PROC_BR = c(0, 0, 0, 1),
                   CPAV_CID = c(1, 1, 1, 1))

这仅适用于 grupoaih 重复且 4 个变量中的任何一个都用 1 填充的情况。如果所有变量中的两个变量都为 0,则它们保持原样。

    标签: r


    【解决方案1】:

    您可以使用 group_by 和 n() 检查是否有重复项。 . 表示原始值,~ 表示公式。

    library(dplyr)
    
    data %>%
      group_by(grupoaih) %>%
      mutate(across(c("NMM_PROC_BR", "NMM_CID", "CPAV_CID"), ~ifelse(n() > 1, 1, .))) %>%
      ungroup()
    
    # # A tibble: 4 × 5
    #   grupoaih NMM_PROC_BR NMM_CID CPAV_PROC_BR CPAV_CID
    #   <chr>          <dbl>   <dbl>        <dbl>    <dbl>
    # 1 09081997           1       1            0        1
    # 2 13122006           1       1            0        1
    # 3 09081997           1       1            0        1
    # 4 22031969           1       0            1        1
    

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2023-03-05
      • 1970-01-01
      • 2019-08-01
      • 2023-03-13
      相关资源
      最近更新 更多