【问题标题】:R, creating a cross-matrix from a list columnR,从列表列创建交叉矩阵
【发布时间】:2020-10-26 17:14:46
【问题描述】:

我有一个包含以下列表列水果的数据框:

水果

苹果、梨、香蕉

香蕉、苹果

苹果,梨

西瓜、苹果、梨、香蕉

梨、西瓜


我想在 R Markdown 中创建一个交叉矩阵 - 仅针对这一列,以便输出显示哪些水果紧密列出在一起。 x 和 y 轴都基于这一列。

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    我认为你想要得到的是协方差矩阵,即:

    df %>% 
      mutate(.id=row_number()) %>%
      unnest_longer(c(Fruits)) %>%
      mutate(value = 1) %>%
      pivot_wider(id_cols=.id, names_from=Fruits) %>%
      select(-.id) -> result
    # replacing NA s with 0 s
    result[is.na(result)] <- 0
    
    result
    # A tibble: 6 x 4
      Apple  Pear Banana Watermelon
      <dbl> <dbl>  <dbl>      <dbl>
    1     1     1      1          0
    2     0     1      0          0
    3     1     0      1          0
    4     1     1      0          0
    5     1     1      1          1
    6     0     1      0          1
    result %>% cov
                     Apple        Pear Banana  Watermelon
    Apple       0.26666667 -0.06666667    0.2 -0.06666667
    Pear       -0.06666667  0.16666667   -0.1  0.06666667
    Banana      0.20000000 -0.10000000    0.3  0.00000000
    Watermelon -0.06666667  0.06666667    0.0  0.26666667
    

    数据

    df <- tibble(Fruits=list(list("Apple", "Pear", "Banana"),
    list("Pear"),
    list("Banana", "Apple"),
    list("Apple", "Pear"),
    list("Watermelon", "Apple", "Pear", "Banana"),
    list("Pear", "Watermelon")))
    

    【讨论】:

    • @Sophia 不客气,如果答案是您需要的,您必须接受它,以便未来的读者更容易获得解决方案
    【解决方案2】:

    采用 Abdessabour Mtk 所说的并将其包装在带有 YAML 标头的 Rmarkdown 代码中。

    ---
    output: 
      html_document
    ---
    
    ```{r}
    library(tidyverse)
    [R code goes here]
    ```
    

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 2018-04-25
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多