我将根据你提供的信息回答这个问题。
25000个索引观测
(代表
id
一个变量
(具有800个级别的因子变量,表示为
val
能行
是:
-
按因子变量分组(例如,通过
group_by()
)
-
添加频率计数(例如,通过
freq = n()
)
-
一个热你的变量
mltools
包装真的很棒)
这会让你
没有你的索引
2 x 801桌
一个热变量
(1:800栏)和
(在801栏中)。许多框架可以很好地处理这样的数据,但是如果没有进一步的信息,就不可能给出具体的答案。
> str(result)
Classes âdata.tableâ and 'data.frame': 800 obs. of 801 variables:
$ val_AAL5 : int 1 0 0 0 0 0 0 0 0 0 ...
$ val_ABP14: int 0 1 0 0 0 0 0 0 0 0 ...
$ val_ACQ8 : int 0 0 1 0 0 0 0 0 0 0 ...
$ val_ADU8 : int 0 0 0 1 0 0 0 0 0 0 ...
$ val_AEB16: int 0 0 0 0 1 0 0 0 0 0 ...
$ val_AEX17: int 0 0 0 0 0 1 0 0 0 0 ...
$ val_AGQ4 : int 0 0 0 0 0 0 1 0 0 0 ...
$ val_AHS8 : int 0 0 0 0 0 0 0 1 0 0 ...
$ val_AHV2 : int 0 0 0 0 0 0 0 0 1 0 ...
$ val_AHX16: int 0 0 0 0 0 0 0 0 0 1 ...
$ val_AIV19: int 0 0 0 0 0 0 0 0 0 0 ...
...
代码
df <- df %>%
group_by(val) %>%
summarise(freq = n())
dt <- as.data.table(df)
result <- one_hot(dt)
数据
library(dplyr)
library(data.table)
library(mltools)
set.seed(1701)
df <- data.frame(
id = 1:25000,
val = sample(paste0(sample(LETTERS[1:26], 800, replace = TRUE),
sample(LETTERS[1:26], 800, replace = TRUE),
sample(LETTERS[1:26], 800, replace = TRUE),
sample(1:20, 20, replace = TRUE)),
25000, replace = TRUE))
> head(df)
id val
1 1 CXC15
2 2 IPH16
3 3 ICK1
4 4 OPJ2
5 5 XSA8
6 6 JKS19