代码之家  ›  专栏  ›  技术社区  ›  user3224522

忽略小数删除重复项

  •  2
  • user3224522  · 技术社区  · 8 年前

    我有这样的数据框,

    a tr78.3
    a tr78.2
    a tr79.1
    b tr12.2
    b tr12.3
    

    我想删除第二列中的重复项,忽略小数,因此这是我的输出(我可以选择第一列),

    a tr78.3
    a tr79.1
    b tr12.2
    

    有许多方法可以获取唯一值(即df%>%不同(df$V1,df$V2)),但如何指定我的问题?

    1 回复  |  直到 8 年前
        1
  •  3
  •   akrun    8 年前

    我们可以使用 sub 申请 duplicated 获取逻辑索引并对数据集进行子集

    df1[!duplicated(sub("\\.\\d+$", "", df1[,2])),]
    

    或使用 tidyverse

    library(dplyr)
    library(stringr)
    df1 %>%
        distinct(V2 = str_replace(V2, "\\.\\d+$", ""), .keep_all = TRUE)
    

    数据

    df1 <- structure(list(V1 = c("a", "a", "a", "b", "b"), V2 = c("tr78.3", 
     "tr78.2", "tr79.1", "tr12.2", "tr12.3")), .Names = c("V1", "V2"
    ), class = "data.frame", row.names = c(NA, -5L))