这是我的上一篇文章的后续问题。
我的数据框根据日期安排特定 PK 的访问,其中有一列:
我正在尝试将其转回宽数据框。其中,每一行都是一次访问,每种测试类型都有一列。对于每次访问,列
对该数据框进行净值计算:
# A tibble: 14 × 9
# Groups: PK, visit [7]
PK visit test date toddler module1 rbs srs adi_score
<chr> <dbl> <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl>
1 683865865 1 date_toddler 2020-12-08 7 NA NA NA NA
2 683865865 2 date_toddler 2021-11-10 10 NA NA NA NA
3 683865865 3 date_module1 2022-02-10 NA 10 NA NA NA
4 683865865 4 date_module1 2022-08-24 NA 10 NA NA NA
5 683865865 4 date_srs_pr 2022-08-24 NA NA NA 79 NA
6 683865865 5 date_srs_pr 2023-01-12 NA NA NA 83 NA
7 683865865 6 date_module1 2023-08-21 NA 10 NA NA NA
8 683865865 6 date_srs_pr 2023-09-21 NA NA NA 90 NA
9 683865865 NA date_adi NA NA NA NA NA NA
10 683865865 NA date_module2 NA NA NA NA NA NA
11 683865865 NA date_module3 NA NA NA NA NA NA
12 683865865 NA date_module4 NA NA NA NA NA NA
13 683865865 NA date_rbsr NA NA NA NA NA NA
14 683865865 NA date_srs_sch NA NA NA NA NA NA
所需数据示例:
PK visit toddler module1 rbs srs adi_score
1 683865865 1 7 NA NA NA NA
2 683865865 2 10 NA NA NA NA
3 683865865 3 NA 10 NA NA NA
4 683865865 4 NA 10 NA 79 NA
5 683865865 5 NA NA NA 83 NA
6 683865865 6 NA 10 NA 90 NA
我尝试过融为长,然后再次融为宽,但是因为有多个 ID,每个 ID 的访问量不同,所以我得到的是 LISTS 和 NULLS 中的值。
"Warning message:
Values from `adi_score`, `ados_module1`, `ados_module2`, `ados_module3`, `ados_module4`, `ados_toddler`,
`rbsr_score`, `srs_preschool` and `srs_school` are not uniquely identified; output will contain list-cols.
• Use `values_fn = list` to suppress this warning.
• Use `values_fn = {summary_fun}` to summarise duplicates.
• Use the following dplyr code to identify duplicates."
在 tidyverse 中您可以使用以下内容:
library(tidyverse)
df%>%
filter(!if_all(date:adi_score, is.na)) %>%
summarise(across(toddler:adi_score, ~na.omit(.x)[1]), .by=c(PK, visit))
PK visit toddler module1 rbs srs adi_score
1 683865865 1 7 NA NA NA NA
2 683865865 2 10 NA NA NA NA
3 683865865 3 NA 10 NA NA NA
4 683865865 4 NA 10 NA 79 NA
5 683865865 5 NA NA NA 83 NA
6 683865865 6 NA 10 NA 90 NA