R,从列表列创建一个交叉矩阵

时间:2020-10-26 17:14:46

标签: r r-markdown

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

水果

苹果,梨,香蕉

香蕉,苹果

苹果,梨

西瓜,苹果,梨,香蕉

梨,西瓜


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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

接受Abdessabour Mtk所说的内容,并使用YAML标头将其包装在Rmarkdown代码中。

---
output: 
  html_document
---

```{r}
library(tidyverse)
[R code goes here]
```