【问题标题】:How to remove the duplicate values for specific column in r如何删除r中特定列的重复值
【发布时间】:2021-12-29 09:16:10
【问题描述】:

我需要删除 date_engaged 列中的重复值,或者是否有任何其他方法可以在不更改列值的情况下获取行数

电流输出

预期输出

数据

structure(list(Incubatee = c("Janitri", "Janitri"), partnership_type = c("GTM", 
"GTM"), plan_end_date = c("2021-06-30", "2021-06-30"), date_engaged = c("2021-06-20", 
"2021-07-06")), row.names = c(NA, -2L), groups = structure(list(
    Incubatee = "Janitri", .rows = structure(list(1:2), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, -1L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

我用来获取plan_end_date ,date_engaged 的​​行数的函数

create_Incubatee_section = function(Incubatee_data) {
  main_row = data.frame(
    Incubatee = Incubatee_data$Incubatee[1],
    partnership_type = "",
    plan_end_date = "",
    date_engaged = ""
  ) 
  
  partnership_type_rows = lapply(
    Incubatee_data$partnership_type,
    function(inc) {
      data.frame(
        Incubatee = "",
        partnership_type = inc,
        plan_end_date = unique(Incubatee_data$plan_end_date),
        date_engaged = date_engaged[which(!duplicated(date_engaged))]
      )
    }
  )
  Reduce(rbind, x = c(list(main_row), partnership_type_rows))
}

expand_collapse = function(data) {
  Incubatee_data = split(data, data$Incubatee)
  Incubatee_sections = lapply(Incubatee_data, create_Incubatee_section)
  total_row = data.frame(
    Incubatee = "Total",
    partnership_type = "",
    plan_end_date = nrow(data),
    date_engaged = nrow(data)
  )
  Reduce(rbind, x = c(Incubatee_sections, list(total_row)))
}

DT::datatable(expand_collapse(x), rownames = F,escape = FALSE,selection=list(mode="single",target="row"),options = list(pageLength = 50,scrollX = TRUE,dom = 'tp',ordering=F,columnDefs = list(list(visible=FALSE),list(className = 'dt-left', targets = '_all'))),class='hover cell-border stripe')

【问题讨论】:

  • 你试过unique(df)吗?
  • expand_collapse(unique(x)) 试过这个仍然得到相同的电流输出

标签: r dataframe


【解决方案1】:

我们可以使用distinct:

library(dplyr)
df %>% 
  distinct(date_engaged, .keep_all = TRUE)

输出:

  Incubatee partnership_type plan_end_date date_engaged
1   Janitri             <NA>          <NA>         <NA>
2      <NA>              GTM    2021-06-30   2021-06-20
3      <NA>              GTM    2021-06-30   2021-07-06
4     Total             <NA>             2            2

数据:

df <- structure(list(Incubatee = c("Janitri", "<NA>", "<NA>", "<NA>", 
"<NA>", "Total"), partnership_type = c("<NA>", "GTM", "GTM", 
"GTM", "GRM", "<NA>"), plan_end_date = c("<NA>", "2021-06-30", 
"2021-06-30", "2021-06-30", "2021-06-30", "2"), date_engaged = c("<NA>", 
"2021-06-20", "2021-07-06", "2021-06-20", "2021-07-06", "2")), class = "data.frame", row.names = c(NA, -6L))

【讨论】:

  • 你能在我的函数中编辑这个吗,或者我应该在我的数据框中使用 distinct@tarjae
猜你喜欢
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2020-07-08
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多