我有一个我正在使用的数据框,称为“鱼”。
数据框有 3 个不同的变量。其中一个变量称为“物种”。
有些物种以字母 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()
等价于但比grepl("^<prefix>", x)
, 其中prefix
is 不包含特殊的正则表达式字符要快得多。
上面的代码假定一个字符列。对于因子列,您可以更改适当的水平。
is.na(levels(fish$species)) <- startsWith(levels(fish$species), "M")
另一种方法是替换为levels<-()
,NA
用于右侧的替换。
levels(fish$species)[startsWith(levels(fish$species), "M")] <- NA
请注意,grepl()
如果您愿意,您绝对可以使用,但这个问题似乎是使用新startsWith()
功能的一个很好的例子。
另请注意,所有这些都已在iris
数据集上成功测试。