Could work better with
pivot_wider(names_from = parsed_parameters, values_from = value)
Omitting id_cols parameter.
> status_washing %>%
+ separate_rows(parsed_parameters, sep = ",") %>%
+ separate(parsed_parameters, c("parsed_parameters", "value"), sep = "=>") %>%
+ drop_na() %>%
+ mutate_if(is.character, ~str_remove_all(., "[\\\"\\s]")) %>%
+ mutate(value = as.numeric(value)) %>%
+ pivot_wider(names_from = parsed_parameters, values_from = value)
# A tibble: 13 x 43
user status_id machine_id Pr Err T0R T0W TIW DryT Lang NtcD NtcW Opt1 Opt2
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 22 123 14 0 0 0 0 1 6 682 429 0 0
2 2 33 123 14 0 0 0 0 1 6 811 401 0 0
3 3 44 123 14 0 0 0 0 1 6 639 442 0 0
4 4 55 123 14 0 0 0 0 1 6 639 442 0 0
5 5 66 123 14 0 0 0 0 1 6 316 160 0 0
6 6 77 123 6 0 46 62 0 0 6 274 156 0 0
7 7 88 123 6 0 0 20 0 0 6 264 147 0 0
8 8 99 123 6 0 57 66 0 0 6 261 150 0 0
9 9 110 123 13 0 0 0 0 1 6 535 253 0 0
10 10 121 123 13 0 0 0 0 1 6 649 436 0 0
11 11 132 123 13 0 0 0 0 1 6 268 150 0 0
12 12 143 123 6 0 51 64 0 0 6 265 147 0 0
13 13 154 123 6 0 0 11 0 0 6 283 162 0 0
# … with 29 more variables: Opt3 <dbl>, Opt4 <dbl>, Opt5 <dbl>, Opt6 <dbl>, Opt7 <dbl>,
# Opt8 <dbl>, Opt9 <dbl>, PrPh <dbl>, Temp <dbl>, motS <dbl>, numF <dbl>, unbC <dbl>,
# unbF <dbl>, FillR <dbl>, Steam <dbl>, APSoff <dbl>, DelVal <dbl>, MachMd <dbl>,
# PrCode <dbl>, SLevel <dbl>, SpinSp <dbl>, chartL <dbl>, APSfreq <dbl>, RemTime <dbl>,
# RecipeId <dbl>, DisTestOn <dbl>, DisTestRes <dbl>, WiFiStatus <dbl>, CheckUpState <dbl>