R 分散数据以创建唯一的行

R 分散数据以创建唯一的行,r,tidyr,R,Tidyr,我有一个数据帧,我想重塑,使每个medid,只有一行。我知道我可以使用spread来实现这一点,但它并没有考虑我想要的样子,我只是在阅读博客、教程等时无法理解这个概念,我只是不知道我哪里出了问题 我的数据目前看起来像 medid year dose drug 1 101 2001 500 A 2 101 2002 600 A 3 101 2003 750 A 4 101 2004 550 A 5 102 2001 300

我有一个数据帧,我想重塑,使每个medid,只有一行。我知道我可以使用spread来实现这一点,但它并没有考虑我想要的样子,我只是在阅读博客、教程等时无法理解这个概念,我只是不知道我哪里出了问题

我的数据目前看起来像

   medid year dose drug
1    101 2001  500    A
2    101 2002  600    A
3    101 2003  750    A
4    101 2004  550    A
5    102 2001  300    B
6    102 2002  330    B
7    102 2003  350    B
8    102 2004  390    B
9    103 2001  100    C
10   103 2002   NA    C
11   103 2003  250    C
12   103 2004  125    C
但我想让它看起来像

  medid  dose.2001 dose.2002 dose.2003 dose.2004 drug.2001 drug.2002 drug.2003 drug.2004
1   101       500       600       750       550         A         A         A         A
2   102       300       330       350       390         B         B         B         B
3   103       100        NA       250       125         C         C         C         C
我曾尝试使用
spread()
,但它没有为每个大地水准面提供唯一的行,而且它看起来也不是我想要的

df <- data.frame(medid=c(101, 101, 101, 101, 102, 102, 102, 102, 103, 103, 103, 103),
                 year=c(2001, 2002, 2003, 2004, 2001, 2002, 2003, 2004, 2001, 2002, 2003, 2004),
                 dose=c(500, 600, 750, 550, 300, 330, 350, 390, 100, NA, 250, 125),
                 drug=c("A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C"))
df %>% spread(year, medid)
df%价差(年,中期)

使用
tidyr::pivot\u wide
,正如@Cettt建议的:

library(tidyr)
枢轴宽度(df,名称从=年,值从=c(药物,剂量),名称从=九月=“.”)
##tibble:3 x 9
#medid drug.2001 drug.2002 drug.2003 drug.2004 dose.2001 dose.2002 dose.2003 dose.2004
#                                           
#110A 500 600 750 550
#2 102 B 300 330 350 390
#3 103 C 100 NA 250 125

使用
tidyr::pivot\u wide
,正如@Cettt建议的:

library(tidyr)
枢轴宽度(df,名称从=年,值从=c(药物,剂量),名称从=九月=“.”)
##tibble:3 x 9
#medid drug.2001 drug.2002 drug.2003 drug.2004 dose.2001 dose.2002 dose.2003 dose.2004
#                                           
#110A 500 600 750 550
#2 102 B 300 330 350 390
#3 103 C 100 NA 250 125

我想你在找
tidyr::pivot\u wired
我想你在找
tidyr::pivot\u wired