将两列数据重塑为 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()
我有一个这样的原始数据集:
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()