Мы получаем count
из 'Date', 'Var' и изменяем форму с 'long' на 'wide' с помощью pivot_wider
library(dplyr)
library(tidyr) #1.0.0
library(stringr)
df1 %>%
count(Date, Var = str_c('Var_', Var)) %>%
pivot_wider(names_from = Var, values_from = n, values_fill = list(n = 0))
# A tibble: 3 x 4
# Date Var_A Var_B Var_C
# <chr> <int> <int> <int>
#1 2019-01-1 3 1 0
#2 2019-02-1 3 1 0
#3 2019-03-1 1 1 1
В base R
, это можетбыть сделано с table
table(df1)
data
df1 <- structure(list(Date = c("2019-03-1", "2019-01-1", "2019-03-1",
"2019-02-1", "2019-01-1", "2019-01-1", "2019-02-1", "2019-02-1",
"2019-02-1", "2019-01-1", "2019-03-1"), Var = c("A", "A", "B",
"A", "A", "B", "A", "A", "B", "A", "C")),
class = "data.frame", row.names = c(NA,
-11L))