5

我有一个我正在使用的数据框,称为“鱼”。

数据框有 3 个不同的变量。其中一个变量称为“物种”。

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

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

我试过这个:

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

但这不起作用。任何人都可以帮忙吗?

4

1 回答 1

7

您可以将替换功能is.na<-()startsWith().

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

根据 R 文档help(startsWith)

startsWith()等价于但比grepl("^<prefix>", x), 其中prefixis 不包含特殊的正则表达式字符要快得多。

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

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

另一种方法是替换为levels<-()NA用于右侧的替换。

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

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

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

于 2016-12-09T18:47:45.417 回答