-3

I want to create several variables which count the occurrence times of var's value for each user.id. Here is an example:

user.id     var
  1          A
  1          B
  2          A
  2          A
  2          C
  3          C

Expected result:

user.id     var_A    var_B     var_C
  1          1         1         0
  2          2         0         1
  3          0         0         1
Jaap
  • 81,064
  • 34
  • 182
  • 193
velvetrock
  • 593
  • 1
  • 8
  • 18

1 Answers1

0

We can do this with tidyverse

library(tidyverse)
df1 %>%
    count(user.id, var) %>% 
    spread(var, n, fill = 0)
# A tibble: 3 x 4
#  user.id     A     B     C
#*   <int> <dbl> <dbl> <dbl>
#1       1     1     1     0
#2       2     2     0     1
#3       3     0     0     1

Or a more efficient approach with data.table

library(data.table)
dcast(setDT(df1), user.id ~ var)
akrun
  • 874,273
  • 37
  • 540
  • 662