【问题标题】:How to classify data points according to multiple factors in r如何根据r中的多个因素对数据点进行分类
【发布时间】:2019-03-21 23:08:22
【问题描述】:

我想按因素水平对数据集中的案例进行分类。下面是一个例子:

假设数据框是这样的

(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

任何建议将不胜感激。

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用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
    

    foofoo2 分别是:

    > 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"))
    

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 2022-01-18
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 2022-11-23
      • 1970-01-01
      • 2019-07-30
      相关资源
      最近更新 更多