Р: Как суммировать категории? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть 60 категорий (называемых CAT) форм жизни (медведи, тигры, киты, деревья и т. Д. c.), И я хочу назначить им 10 сводных категорий (называемых THEME).

> dt <- fread("lifeforms.csv")
> head(dt)
      CAT COUNT
1:  bears    10
2: tigers     3
3: whales     9

Если бы их было не так много, я бы просто использовал:

dt$THEME[dt$CAT=="tigers" | dt$CAT=="bears"]="Mammals"

Но это занимает слишком много времени и слишком грязно для моих 60 различных значений CAT и 10 ТЕМ. У меня есть таблица «lookup» в другом файле data.table:

> catthemes <- fread("catthemes.csv")
> catthemes
      CAT   THEME
1:  bears Mammals
2: tigers Mammals

Как это сделать, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 13 апреля 2020
CAT <- c("bears", "tigers", "whales", "lizards")
COUNT <- c(10, 3, 9, 15)
THEME <- c("Mammals", "Mammals", "Mammals", "Reptiles")

lifeforms <- data.frame(CAT, COUNT)
catthemes <- data.frame(CAT, THEME)


new_lifeforms <- merge(lifeforms, catthemes, by="CAT")

      CAT COUNT    THEME
1   bears    10  Mammals
2 lizards    15 Reptiles
3  tigers     3  Mammals
4  whales     9  Mammals
1 голос
/ 13 апреля 2020

Опция с использованием inner_join

library(dplyr)
inner_join(lifeforms, catthemes, by = 'CAT')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...