Как классифицировать точки данных по нескольким факторам в - PullRequest
2 голосов
/ 21 марта 2019

Я бы хотел классифицировать дела в наборе данных по уровням их факторов. Ниже приведен пример:

Предположим, что кадр данных выглядит примерно так

(foo <- data.frame(cat1 = c("a", "b", "c"),
                   cat2 = c("two", "two", "one"),
                   cat3 = c("alpha", "beta", "beta")))

##   cat1 cat2  cat3
## 1    a  two alpha
## 2    b  two  beta
## 3    c  one  beta

и все комбинации уровней этих трех факторов равны

expand.grid(c("a", "b", "c"),
            c("one", "two"),
            c("alpha", "beta"))

##    Var1 Var2  Var3
## 1     a  one alpha
## 2     b  one alpha
## 3     c  one alpha
## 4     a  two alpha
## 5     b  two alpha
## 6     c  two alpha
## 7     a  one  beta
## 8     b  one  beta
## 9     c  one  beta
## 10    a  two  beta
## 11    b  two  beta
## 12    c  two  beta

Как правило, я хотел бы получить фрейм данных, такой как следующий

(foo_res <- cbind(foo, group = c(4,11,9)))

##   cat1 cat2  cat3 group
## 1    a  two alpha     4
## 2    b  two  beta    11
## 3    c  one  beta     9

Любое предложение будет с благодарностью.

1 Ответ

0 голосов
/ 21 марта 2019

Вы можете использовать merge

> names(foo2) <- names(foo)
> foo2$group <- rownames(foo2)
> merge(foo, foo2, all=FALSE)
  cat1 cat2  cat3 group
1    a  two alpha     4
2    b  two  beta    11
3    c  one  beta     9

Где foo и foo2:

> foo <- data.frame(cat1 = c("a", "b", "c"),
                     cat2 = c("two", "two", "one"),
                     cat3 = c("alpha", "beta", "beta"))

> foo2 <- expand.grid(c("a", "b", "c"),
                          c("one", "two"),
                          c("alpha", "beta"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...