У меня есть набор данных, в котором один столбец - это строка, состоящая из 1 числа, указывающего день недели, за которым следует любое количество 10-значных блоков:
# A tibble: 7 x 3
respid record_type record_data
<chr> <chr> <chr>
1 20163911123050111 6 1000456561200035759120000989800
2 20163911123050111 6 2000405161200031719120000999900
3 20163911123050111 6 30004071212000320212200032832220003545620
4 20163911123050111 6 40004051612000326272200033032220003545620
5 20163911123050111 6 5036803031200040404120004051812000434361200045556120003575910
6 20163911123050111 6 6000411161200031720120003283121000344462100035759120004707410
7 20163911123050111 6 70004111312000314261200043334120004535610
Я бы хотел изящный способ превратить это в длинный формат:
1. разбить столбец 3 на фиксированные куски длиной 1, затем серию длиной 10 символов
2. переход от широкой к длинной
так, например, первая строка выше станет 3 строками:
respid record_type dayofweek chunk
<chr> <chr> <chr> <chr>
1 20163911123050111 6 1 0004565612
2 20163911123050111 6 1 0003575912
3 20163911123050111 6 1 0000989800
Пока что я использую этот код для первой части, но это цикл ...:
my_list<-list()
for(i in 1:nrow(mydf)){
temp_list<-list()
temp_list
temp_list$respid <- mydf[i,1]
temp_list$record_type <- mydf[i,2]
temp_list$dayofweek <- stringi::stri_sub(t6[i,3],1,1)
temp_list$chunk <- stringi::stri_sub(mydf[i,3],
seq(2, stringi::stri_length(mydf[i,3]), by = 10),
length = 10)
my_list[[i]] <- temp_list
}
Есть ли способ сделать это с помощью чего-то вроде purrr :: map и tidyr :: unnest?