我有一个具有重复项的数据帧,我想将这些重复对组合在一行中,如下所示:
原始数据帧:my_original_dataframe
id. name. age. sex. weigt. date.
01 ANA 18 F 56.7 02/27/2020
02 ANA 18 F 59.5 05/05/2020
03 KARLA 21 F 60.1 08/04/2020
04 KARLA 21 F 60.4 12/30/2020
05 MARIA 30 F 49.9 01/06/2020
06 MARIA 30 F 50.2. 03/07/2020
我想用R做什么:my_dedesired_dataframe
id. name age sex weigt1 date1 weight2 date2
01 ANA 18 F 56.7 02/27/2020 59.5 05/05/2020
02 KARLA 21 F 60.1 08/04/2020 60.4 12/30/2020
03 MARIA 30 F 49.9 01/06/2020 50.2 03/07/2020
我将非常感谢任何帮助!
以下是tidyr::pivot_wider
的方法。请注意,当前的实现并没有按照您期望的顺序进行;您可以手动更改它,使用此处的策略之一,也可以使用自定义pivot_wider_spec()
。
library(tidyverse)
df1 %>%
group_by(name) %>% mutate(instance = row_number()) %>% ungroup() %>%
select(-id) %>%
pivot_wider(names_from = instance, values_from = c(weight, date),
names_glue = "{instance}_{.value}",
names_sort = TRUE)
# A tibble: 3 x 7
name age sex `1_weight` `2_weight` `1_date` `2_date`
<chr> <int> <lgl> <dbl> <dbl> <chr> <chr>
1 ANA 18 FALSE 56.7 59.5 02/27/2020 05/05/2020
2 KARLA 21 FALSE 60.1 60.4 08/04/2020 12/30/2020
3 MARIA 30 FALSE 49.9 50.2 01/06/2020 03/07/2020