我有一个清单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(使用前将#替换为@)