我有一个长格式的数据框。 OTU列具有〜428个唯一ID,并且经过重复测量得出26,536行。
'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个(top9names)。 我做了一个逻辑向量,将前9名中的所有OTU都设置为TRUE,而将所有其他OTU设置为FALSE
matches <- qd_melted$OTU %in% top9names
对于这9个OTU名称,我想保留相应的系列名称(column5)。对于其他OTU名称(〜419),我想将“家庭”列中的值替换为“其他类群”。 有关如何编写此代码的任何提示?
答案 0 :(得分:3)
在为因子添加新值时,您需要首先更新级别。这是一种方法-
levels(qd_melted$Family) <- c(levels(qd_melted$Family), "Other taxa")
qd_melted$Family[!matches] <- "Other taxa"