有没有一个R函数可以识别 Dataframe 中的重复行,如果在任何一行中发现“x”,就对它们进行分类?

ajsxfq5m  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(86)

我正在R studio中做一个项目,处理一个关于信息的大型数据库,这个数据库充满了重复信息。我从事环境科学工作,对编码只有基本的了解,我主要使用R进行数据分析。我已经找到了筛选出这些重复项的方法,但问题是,某些分类可能是重复项,也可能不是,我想将这些数据行分开,以便手工检查。
基本上,我正在查看进入康复中心的鸟类原因,如果日期1和日期2具有相同的值,则可以找到哪些是重复的。然而,幼鸟有时看起来像重复,因为一次可以接纳多只。下面是一个基本的例子,我的dataframe看起来像什么;
| 日期1|起因|日期2| Date 2 |
| --|--|--| ------------ |
| 01-05|不详|01-15| 01-15 |
| 01-05|骨盆|01-15| 01-15 |
| 06-12|不详|2019 - 06-24| 06-24 |
| 06-12|孤儿|2019 - 06-24| 06-24 |
| 06-12|不详|2019 - 06-24| 06-24 |
| 06-12|孤儿|2019 - 06-24| 06-24 |
这里的蓝鸟大概是一个成年人,应该只出现一次,但我希望知更鸟行都分别确定为我检查。如果只有一些鸟行包含“孤儿”作为原因,我如何对它们进行分组?
我试着过滤掉所有重复的dataframe,然后在Cause中拉取带有“ORPHAN”的行,但这会留下应该与它们分组的行,例如上面列出的第3行和第5行。
感谢您发送编修。我认为我对这个问题的期望结果是在 Dataframe 中添加两个新列,一个用于计数和分组具有相同物种的所有行,即日期1和日期2(即日期1和日期2)。OID = 1.1和1.2(对于松鸦行),以及2.1、2.2、2.3和2.4(对于知更鸟行),以及识别这些“组”是否是幼鸟的OID(即Baby = true,或者Baby = false)。我仍然不完全确定我想做什么来合并重复的行,但是从你的一些建议中得到了启发。作为参考,我可以通过和手检查所有的数据,但有60,000+行,并希望找到一个更有效的方式之前,投资于这样的奋进。

gmxoilav

gmxoilav1#

听起来你想要这样的东西?:

df %>%
    group_by(Species, `Date 1`, `Date 2`) %>%
    mutate(Check = ifelse("ORPHAN" %in% Cause, paste(sort(Cause), collapse = ", "), NA)) %>%
    ungroup()%>%
    select(-Cause) %>%
    distinct()

Species  `Date 1` `Date 2` Check                   
  <chr>    <chr>    <chr>    <chr>                   
1 Blue Jay 01-05    01-15    NA                      
2 Robin    06-12    06-24    ORPHAN, ORPHAN, UNK, UNK

字符串

相关问题