r-使用逻辑向量替换列中的值



我有一个长格式的数据帧。OTU列有大约428个唯一ID,重复度量导致26536行。

'data.frame':   26536 obs. of  18 variables:
$ OTU        : chr  "109431" "109431" "109431" "109431" ...
$ Sample     : chr  "m.ch.45" "m.ch.59" "m.ch.85" "m.ch.51" ...
$ Abundance  : num  0.994 0.983 0.981 0.975 0.975 ...
$ X.SampleID : Factor w/ 62 levels "m.ch.1","m.ch.101",..: 28 37 52 33 
8 15 13 7 58 14 ...
$ Family     : Factor w/ 89 levels 
"f__","f__[Acidaminobacteraceae]",..: 26 26 26 26 26 26 26 26 26 26 
...

在OTU列中的唯一id中,我想重点介绍其中的9个(top9name(。我做了一个逻辑向量,前9名中的所有OTU都为TRUE,所有不为FALSE的都为

matches <- qd_melted$OTU %in% top9names

对于这9个OTU名称,我希望保留相应的族名称(第5列(。对于其他OTU名称(~419(,我想将"科"列中的值替换为"其他分类群"。有关于如何编码的提示吗?

向因子添加新值时,需要首先更新级别。有一种方法-

levels(qd_melted$Family) <- c(levels(qd_melted$Family), "Other taxa")
qd_melted$Family[!matches] <- "Other taxa"

最新更新