Заменить значения в столбце, используя логический вектор - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть датафрейм в полной форме.Столбец OTU имеет ~ 428 уникальных идентификаторов с повторяющимися измерениями, в результате чего получается 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 я хочу остановиться на 9 из них (top9names).Я сделал логический вектор со всеми OTU в верхних 9 как TRUE и со всеми, которые не как FALSE

matches <- qd_melted$OTU %in% top9names

Для этих 9 имен OTU я хочу сохранить соответствующее имя семейства (колонка 5).Для других имен OTU (~ 419) я хочу заменить значение в столбце Семейство на «Другие таксоны».Любые советы о том, как кодировать это?

1 Ответ

0 голосов
/ 13 ноября 2018

При добавлении нового значения к факторам вам необходимо сначала обновить уровни.Вот один из способов -

levels(qd_melted$Family) <- c(levels(qd_melted$Family), "Other taxa")

qd_melted$Family[!matches] <- "Other taxa"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...