首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以删除重复项,但如果值在n个选定列中至少出现一次,则可以添加该值吗?

是否有一种方法可以删除重复项,但如果值在n个选定列中至少出现一次,则可以添加该值吗?
EN

Stack Overflow用户
提问于 2022-09-02 15:57:46
回答 2查看 36关注 0票数 2

例如,假设有一个如下所示的数据集

编辑:为额外上下文添加日期和Num列

代码语言:javascript
复制
ID|Date  |Col1|Col2|Col3|Num
 1  10-10  Y             5    
 1  10-10  Y    Y        5 
 1  10-10            Y   5
 2  09-17  Y             6
 2  09-17            Y   6
 3  12-14       Y        7
 3  12-14  Y             7 
 4  06-06  Y             8
 4  06-06

有什么方法可以得到这样的输出吗?

代码语言:javascript
复制
ID|Date  |Col1|Col2|Col3|Num
 1  10-10  Y    Y    Y   5    
 2  09-17  Y         Y   6
 3  12-14  Y    Y        7
 4  06-06  Y             8
代码语言:javascript
复制
structure(list(ID = c("000001", "000001", "000001", "000001", 
"000001", "000001", "000001", "000001", "000001", "000001", "000002", 
"000002", "000002", "000003", "000003", "000003", "000003", "000003", 
"000003", "000003"), Date = structure(c(1570492800, 1570492800, 
1570492800, 1570492800, 1570492800, 1570492800, 1570492800, 1570492800, 
1570492800, 1570492800, 1570665600, 1570665600, 1570665600, 1570838400, 
1570838400, 1570838400, 1570838400, 1570838400, 1570838400, 1570838400
), tzone = "UTC", class = c("POSIXct", "POSIXt")), Col1 = c(NA, 
NA, NA, NA, "Y", NA, NA, "Y", NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA), Col2 = c("Y", "Y", "Y", "Y", "Y", "Y", "Y", 
"Y", "Y", "Y", "Y", "Y", "Y", NA, NA, NA, NA, "Y", "Y", "Y"), 
    Col3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, "Y", NA, NA, "Y", "Y", "Y"), Num1 = c(1, 1, 1, 1, 
    1, 1, 1, 1, 1, 1, 861, 861, 861, 497, 497, 497, 497, 497, 
    497, 497)), row.names = c(NA, -20L), class = c("tbl_df", 
"tbl", "data.frame"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-02 16:00:35

我们可以按'ID‘、'Date’和summarise (其余的列(everything()) )分组,方法是循环使用across并提取第一个非NA元素。

代码语言:javascript
复制
library(dplyr)
df2 %>%  
   group_by(ID, Date) %>%
   summarise(across(everything(),  ~.x[!is.na(.x)][1]),
     .groups = 'drop')

-output

代码语言:javascript
复制
# A tibble: 3 × 6
  ID     Date                Col1  Col2  Col3   Num1
  <chr>  <dttm>              <chr> <chr> <chr> <dbl>
1 000001 2019-10-08 00:00:00 Y     Y     <NA>      1
2 000002 2019-10-10 00:00:00 <NA>  Y     <NA>    861
3 000003 2019-10-12 00:00:00 <NA>  Y     Y       497
票数 2
EN

Stack Overflow用户

发布于 2022-09-02 18:37:48

aggregate的R基选项

代码语言:javascript
复制
      ID       Date Col1 Col2 Col3 Num1
1 000001 2019-10-08    Y    Y         1
2 000002 2019-10-10         Y       861
3 000003 2019-10-12         Y    Y  497
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73585244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档