I have dataframe like the following:
> head(n)
# A tibble: 6 x 23
`Record ID of REGN DATA` Pain_1 Pain_2 Redness_1 Redness_2 Swelling_1 Swelling_2
<dbl> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 Yes Yes No No No No
2 2 No Yes No No No No
3 3 Yes No No No No No
4 4 Yes Yes No No Yes Yes
5 5 No No No No No No
6 6 No No No No No No
Pain_1
and Pain_2
are the answers for the symptom "pain" of the patient during their first visit and second visit, respectively. The same is true for the variables Redness
and Swelling
. I want to convert the dataframe as longitudinal for each of the symptoms Pain
, Redness
and Swelling
and a flag variable to show the visit number like the following. I tried with gather
function which converts all symptoms in one column. Can someone kindly help
> head(tr)
# A tibble: 6 x 5
`Record ID of REGN DATA` Pain Redness Swelling Visit
<dbl> <chr> <chr> <chr> <dbl>
1 1 Yes No No 1
2 2 No No No 1
3 3 Yes No No 1
4 1 Yes No No 2
5 2 Yes No No 2
6 3 No No No 2
This is the sample data
structure(list(`Record ID of REGN DATA` = c(1, 2, 3, 4, 5, 6,
7, 8, 9, 10), Pain_1 = c("Yes", "No", "Yes", "Yes", "No", "No",
"Yes", "Yes", "Yes", "Yes"), Pain_2 = c("Yes", "Yes", "No", "Yes",
"No", "No", "No", "Yes", "Yes", "Yes"), Redness_1 = c("No", "No",
"No", "No", "No", "No", "Yes", "Yes", "No", "No"), Redness_2 = c("No",
"No", "No", "No", "No", "No", "No", "Yes", "No", "No"), Swelling_1 = c("No",
"No", "No", "Yes", "No", "No", "No", "Yes", "No", "Yes"), Swelling_2 = c("No",
"No", "No", "Yes", "No", "No", "No", "Yes", "No", "Yes"), Tiredness_1 = c("Yes",
"No", "Yes", "Yes", "No", "No", "No", "No", "No", "Yes"), Tiredness_2 = c("Yes",
"Yes", "No", "Yes", "No", "No", "Yes", "No", "Yes", "Yes"), Headache_1 = c("No",
"No", "No", "Yes", "No", "No", "No", "No", "No", "No"), Headache_2 = c("No",
"Yes", "No", "Yes", "No", "No", "No", "Yes", "No", "No"), Muscle_1 = c("Yes",
"No", "Yes", "Yes", "No", "No", "No", "No", "No", "No"), Muscle_2 = c("Yes",
"Yes", "No", "No", "No", "No", "Yes", "Yes", "No", "No"), Chills_1 = c("No",
"No", "Yes", "No", "No", "No", "No", "No", "No", "No"), Chills_2 = c("No",
"Yes", "No", "No", "No", "No", "Yes", "No", "No", "No"), Fever_1 = c("Yes",
"No", "No", "No", "No", "No", "No", "No", "Yes", "Yes"), Fever_2 = c("Yes",
"Yes", "No", "No", "No", "No", "Yes", "No", "No", "No"), Nausea_1 = c("No",
"No", "No", "No", "No", "No", "No", "No", "No", "No"), Nausea_2 = c("No",
"No", "No", "No", "No", "No", "No", "Yes", "No", "No"), JointPain_1 = c("Yes",
"No", "Yes", "No", "No", "No", "No", "No", "Yes", "No"), JointPain_2 = c("Yes",
"No", "No", "No", "No", "No", "Yes", "No", "No", "No"), `Allergic reaction_1` = c("No",
"No", "No", "No", "No", "No", "No", "No", "No", "No"), `Allergic reaction_2` = c("No",
"No", "No", "No", "No", "No", "No", "No", "No", "No")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))