R 将每个用户id组转换为特征向量

R 将每个用户id组转换为特征向量,r,R,我有一个表user\u aisles,它是一个包含user\u id的数据框,按user\u aisles和n分组,这是用户在过道中购买的物品数量 kable( head( summarize(user_aisles, n=n()) , 9) ) 给予 我想将其转换为每个用户id的特征向量。这样的特征向量应该是nrow(aisles)dimensional 因此,每个用户id都会获得相应的特征向量。用户1的特征向量可能(基于数据)如下 1: [0, 8, 12, 5, 0, .., 0] 我

我有一个表
user\u aisles
,它是一个包含
user\u id
的数据框,按
user\u aisles
n
分组,这是用户在过道中购买的物品数量

kable( head( summarize(user_aisles, n=n()) , 9) )
给予

我想将其转换为每个用户id的特征向量。这样的特征向量应该是
nrow(aisles)
dimensional

因此,每个
用户id
都会获得相应的特征向量。用户1的特征向量可能(基于数据)如下

1: [0, 8, 12, 5, 0, .., 0]

我如何才能做到这一点?

组假设您的数据位于名为
data
的数据框中,您可以使用
tidyr
完成功能:

groups <- split(df, df$user_id)
lapply(groups, function(x) rep(x$aisle_id, x$n))
library(tidyverse)    
data %>% complete(user_id, aisle_id = 1:21, fill = list(n = 0))

# A tibble: 42 × 3
   user_id aisle_id     n
     <dbl>    <dbl> <dbl>
1        1        1     0
2        1        2     8
3        1        3    12
4        1        4     5
5        1        5     0
6        1        6     0
7        1        7     0
8        1        8     0
9        1        9     0
10       1       10     0
# ... with 32 more rows

不,那不是我需要的
x$id
应该是每个特征向量中的索引。我不知道你为什么只是重复这个值?
library(tidyverse)    
data %>% complete(user_id, aisle_id = 1:21, fill = list(n = 0))

# A tibble: 42 × 3
   user_id aisle_id     n
     <dbl>    <dbl> <dbl>
1        1        1     0
2        1        2     8
3        1        3    12
4        1        4     5
5        1        5     0
6        1        6     0
7        1        7     0
8        1        8     0
9        1        9     0
10       1       10     0
# ... with 32 more rows
data %>% 
complete(user_id, aisle_id = 1:21, fill = list(n = 0)) %>% 
mutate(aisle_id = paste0("aisle_", formatC(aisle_id, width = 2, flag = 0))) %>% spread(aisle_id, n)

    # A tibble: 2 × 22
  user_id aisle_01 aisle_02 aisle_03 aisle_04 aisle_05 aisle_06 aisle_07 aisle_08 aisle_09 aisle_10 aisle_11 aisle_12
*   <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
1       1        0        8       12        5        0        0        0        0        0        0        0        0
2       2        1        0        6        0        0        0        0        0        0        0        0        0
# ... with 9 more variables: aisle_13 <dbl>, aisle_14 <dbl>, aisle_15 <dbl>, aisle_16 <dbl>, aisle_17 <dbl>, aisle_18 <dbl>,
#   aisle_19 <dbl>, aisle_20 <dbl>, aisle_21 <dbl>