我有此代码段。
mat <- retail %>%
select(Description) %>%
unique() %>%
mutate(value = as.numeric(Description %in% customer_order)) %>%
spread(Description, value) %>%
as.matrix()
基本上,我正在广播并将其转换为矩阵。如何将相同的语句写成数据表格式?
也许以下:
library(data.table)
setDT(retail)
as.matrix(
transpose(
unique(retail[, 'Description'])[, value := as.numeric(Description %in% customer_order)],
make.names = "Description"))
由于您只有一个变量要“投射”,因此不需要这样做。
数据:
retail <- data.frame(ID=1:8, Description=c("R","I","S","F","U","N","N","N"), stringsAsFactors = TRUE)
retail
customer_order <- c("F","U","N")
library(tidtverse)
retail %>%
select(Description) %>%
unique() %>%
mutate(value = as.numeric(Description %in% customer_order)) %>%
spread(Description, value) %>%
as.matrix()
# F I N R S U
#[1,] 1 0 1 0 0 1
library(data.table)
setDT(retail)
as.matrix(
transpose(
unique(retail[, 'Description'])[, value := as.numeric(Description %in% customer_order)],
make.names = "Description"))
# R I S F U N
#[1,] 0 0 0 1 1 1