如何将dplyr语句编写为数据表语句?

问题描述 投票:0回答:1

我有此代码段。

mat <- retail %>% 
       select(Description) %>% 
       unique() %>% 
       mutate(value = as.numeric(Description %in% customer_order)) %>% 
       spread(Description, value) %>% 
       as.matrix() 

基本上,我正在广播并将其转换为矩阵。如何将相同的语句写成数据表格式?

r
1个回答
0
投票

也许以下:

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
© www.soinside.com 2019 - 2024. All rights reserved.