将两列数据重塑为 r 中从长到宽的稀疏矩阵

reshape two column data to sparse matrix in r long to wide

我有一个这样的原始数据集:

ID  Click  
1   A  
1   B  
1   E  
2   A  
2   Q  
3   B  
3   D  
3   F  

我打算做的是将其转置为这样的稀疏矩阵:

ID  A   B   D   E   Q   F    
1   1   1   0   1   0   0  
2   1   0   0   0   1   0  
3   0   1   1   0   0   1  

稀疏矩阵的列数是原始数据中唯一'click'值的数目。稀疏矩阵的行数是原始数据中唯一'ID'个数的个数。如果 "click" 出现在原始数据集中的特定 ID 中,则值为 1,否则值为 0。

我在 R 中尝试了 reshape() 函数,但它不起作用。任何人都可以帮忙吗?谢谢!

你可以这样做:

library(tidyverse)

dat <- tribble(~"ID",  ~"Click",
          1,   "A",  
          1,   "B",  
          1,   "E",  
          2,   "A",  
          2,   "Q",  
          3,   "B",  
          3,   "D",  
          3,   "F")

table(dat)
#> ID  A B D E F Q
#>   1 1 1 0 1 0 0
#>   2 1 0 0 0 0 1
#>   3 0 1 1 0 1 0

reprex package (v0.2.1)

于 2019-02-25 创建

编辑: 澄清我的 post 你不需要 library(tidyverse) 或者用 tribble() 你的函数构建你的数据寻找的是 table()