如何将以特定字母开头的值更改为 NA(在 R 中)

How to change values that start with a certain letter to NA (in R)

我正在使用一个名为 "fish" 的数据框。

数据框有 3 个不同的变量。其中一个变量称为 "species".

有些物种以字母 M 开头。我想将所有以字母 M 开头的物种的值更改为缺失 (NA)。

我知道当你在做整个物种名称时如何将它更改为 NA,但是你如何只为以字母 M 开头的物种做这个?

我试过这个:

fish$species[fish$species=="^M_"] <- NA

但这行不通。有人可以帮忙吗?

您可以将替换函数 is.na<-()startsWith() 一起使用。

is.na(fish$species) <- startsWith(fish$species, "M")

根据 R 文档 help(startsWith)

startsWith() is equivalent to but much faster than grepl("^<prefix>", x), where prefix is not to contain special regular expression characters.

上面的代码假设有一个字符列。对于因子列,您可以更改适当的水平。

is.na(levels(fish$species)) <- startsWith(levels(fish$species), "M")

另一种方法是用 levels<-() 替换,在右侧使用 NA 替换。

levels(fish$species)[startsWith(levels(fish$species), "M")] <- NA

请注意,如果您愿意,您绝对可以使用 grepl(),但这个问题似乎是使用新 startsWith() 函数的一个很好的例子。

另请注意,所有这些都已在 iris 数据集上成功测试。