如何将以特定字母开头的值更改为 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
数据集上成功测试。
我正在使用一个名为 "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 thangrepl("^<prefix>", x)
, whereprefix
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
数据集上成功测试。