Я хотел бы создать столбцы на основе значений в некоторых полях, заполненных значениями в других полях. Например, column1_time имеет значение «1030», а column1_status имеет значение «забронировано». Я хотел бы перенести их в новое поле time1030 со значением «забронировано». Имеется 21 уникальный столбец со временем (время указывается только один раз для каждой строки, поэтому они уникальны для 21 столбца) - и есть 21 уникальный столбец со статусами, которые сопоставляются со столбцами времени. Таким образом, эти 42 столбца время + статус должны быть переставлены в один столбец за уникальное время, заполняемое соответствующим статусом этого времени.
У меня есть данные, которые выглядят так:
Я хотел бы использовать функциональность R / сборка / распространение или изменение формы (унаследованная версия), чтобы транспонировать эти данные так:
Я возился с gather
и spread
в течение нескольких часов, но не мог понять это. Я думал, что установка ключа на ends_with('_time')
и значение на ends_with('_status')
может сработать, но это не с моими попытками.
Для воспроизводимого примера данных:
structure(list(appointment1_time = c("1030", "1030"), appointment2_time = c("1100",
"1100"), appointment3_time = c("1130", "1130"), appointment4_time = c("1200",
"1200"), appointment5_time = c("1230", "1230"), appointment6_time = c("0100",
"0100"), appointment7_time = c("0130", "0130"), appointment8_time = c("0200",
"0200"), appointment9_time = c("0230", "0230"), appointment10_time = c("0300",
"0300"), appointment11_time = c("0330", "0330"), appointment12_time = c("0400",
"0400"), appointment13_time = c("0430", "0430"), appointment14_time = c("0500",
"0500"), appointment15_time = c("0530", "0530"), appointment16_time = c("0600",
""), appointment17_time = c("0630", ""), appointment18_time = c("0700",
""), appointment19_time = c("0730", ""), appointment20_time = c(NA_character_,
NA_character_), appointment21_time = c(NA_character_, NA_character_
), appointment1_status = c("booked", "available"), appointment2_status = c("booked",
"available"), appointment3_status = c("booked", "available"),
appointment4_status = c("booked", "available"), appointment5_status = c("booked",
"available"), appointment6_status = c("booked", "available"
), appointment7_status = c("booked", "available"), appointment8_status = c("booked",
"available"), appointment9_status = c("booked", "available"
), appointment10_status = c("booked", "available"), appointment11_status = c("booked",
"available"), appointment12_status = c("available", "available"
), appointment13_status = c("available", "available"), appointment14_status = c("available",
"available"), appointment15_status = c("booked", "available"
), appointment16_status = c("available", ""), appointment17_status = c("available",
""), appointment18_status = c("available", ""), appointment19_status = c("available",
""), appointment20_status = c(NA_character_, NA_character_
), appointment21_status = c(NA_character_, NA_character_)), row.names = 1:2, class = "data.frame")