【问题标题】:Removing duplicate values in a column of a dataframe in R without dropping the rows associated with the duplicated values在R中删除数据框列中的重复值而不删除与重复值关联的行
【发布时间】:2021-10-14 04:14:48
【问题描述】:

我有一个数据框,它有 6 行和 6 列。

data <- data.frame(
Unit = c("A", "A", "B", "B", "C", "C"),
P1 = c(1:6),
P2 = c(1:6),
P3 = c(1:6),
P4 = c(1:6),
P5 = c(1:6),
stringsAsFactors = FALSE)

我只需要在 列中保留唯一值的第一次出现。我如何在 R 中实现这一点?我的输出应该是这样的。

【问题讨论】:

    标签: data unit r dataframe subset


    【解决方案1】:

    我们可以使用duplicatedreplace""

    library(dplyr)
    data %>%
        mutate(Unit = replace(Unit, duplicated(Unit), ""))
      Unit P1 P2 P3 P4 P5
    1    A  1  1  1  1  1
    2       2  2  2  2  2
    3    B  3  3  3  3  3
    4       4  4  4  4  4
    5    C  5  5  5  5  5
    6       6  6  6  6  6
    

    或者base R

    data$Unit[duplicated(data$Unit)] <- ""
    

    【讨论】:

      【解决方案2】:

      这很简单,假设顺序已经固定了

      library(tidyverse)
      
      data <- data.frame(
        Unit = c("A", "A", "B", "B", "C", "C"),
        P1 = c(1:6),
        P2 = c(1:6),
        P3 = c(1:6),
        P4 = c(1:6),
        P5 = c(1:6),
        stringsAsFactors = FALSE)
      
      
      data %>% 
        group_by(Unit) %>% 
        mutate(Unit = if_else(row_number() == 1,Unit,"")) %>% 
        ungroup()
      #> # A tibble: 6 x 6
      #>   Unit     P1    P2    P3    P4    P5
      #>   <chr> <int> <int> <int> <int> <int>
      #> 1 "A"       1     1     1     1     1
      #> 2 ""        2     2     2     2     2
      #> 3 "B"       3     3     3     3     3
      #> 4 ""        4     4     4     4     4
      #> 5 "C"       5     5     5     5     5
      #> 6 ""        6     6     6     6     6
      

      reprex package (v2.0.1) 于 2021-08-10 创建

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 2021-12-06
        • 1970-01-01
        • 2020-04-03
        • 2021-04-01
        • 2021-05-13
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        相关资源
        最近更新 更多