查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

2024-06-19

我有一个清单BELGIAN_COAST_list包含数百个数据帧(df1, df2, ...) 15 列 X 1000 行。每个数据帧的最后一列称为Chemicals并包含一些字符,例如Sulfate or Ammonia。但是这一列有很多行Chemicals每个数据帧中都有重复(由于测量设备的技术问题)。

我希望将重复的字符转换为NULL这样它们只会在我列表中每个 df 的整列中出现一次。

我尝试过了unlist my BELGIAN_COAST_list进而

BELGIAN_COAST$Chemicals[duplicated(BELGIAN_COAST$chemicals)] <- ""  

在这种情况下,字符在合并的整个数据框中只会出现一次。我希望它们在每个数据框中出现一次(df1$Chemicals, df2$Chemicals, ...) 我的BELGIAN_COAST_list。因此我需要将数据保存在 df 列表中。

有人有什么想法吗?


In base R:

lapply(BELGIAN_COAST_list, function(x) {
  dups <- duplicated(x[, ncol(x)]) 
  x[dups, ncol(x)] <- NA_character_ 
  x})

这是通过最后一列按位置完成的。如果您想按名称调用该列,则可以更改ncol(x) to "Chemicals".


Using tidyverse:

library(tidyverse)

purrr::map(BELGIAN_COAST_list, ~ dplyr::mutate(., across(last_col(), ~ ifelse(duplicated(.), NA_character_, .))))

再次通过列名更改来调用last_col() to Chemicals: 请注意这里缺少引号。

无论哪种情况,如果Chemicals是数字然后使用NA代替NA_character_.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找数据帧列表中同一列中的所有重复值并将其转换为 NULL 的相关文章

随机推荐