1
我有一个可重现的df
,其中有个人重复采样。对于每个样本,我跟踪样品的采集和使用的介质(A或B)。根据数据框中的两列创建一个新列
dat <- data.frame(IndID = factor(c(1,1,2,2,2,3,3)),
Order = c(1,2,1,2,3,1,2),
Media = factor(c("A", "B", "B","A","B","A", "A")))
dat
IndID Order Media
1 1 1 A
2 1 2 B
3 2 1 B
4 2 2 A
5 2 3 B
6 3 1 A
7 3 2 A
我想创建一个新列,其中包含媒体和一个数字,表示媒体中每个级别的采样顺序。换句话说,IndID和Media分组后,我想制作一个新的专栏来订购样品。对于每个人,如果两个不同媒体(如IndID 1)中只有两个样本,则新值将为“A1”和“B1”。如果来自同一媒体的两个样本,新值需要遵循采样顺序为“B1”和“B2”。
鉴于上述数据,我试图创建下面列
dat$WantThis <- c("A1", "B1","B1", "A1","B2", "A1", "A2")
IndID Order Media WantThis
1 1 1 A A1
2 1 2 B B1
3 2 1 B B1
4 2 2 A A1
5 2 3 B B2
6 3 1 A A1
7 3 2 A A2
我一直在尝试使用dplyr
包,但不能连接上应该包括哪些内容作为第二个参数来paste
点。
dat2 <- as.data.frame(dat %>% group_by(IndID, Media) %>% mutate(MediaOrder = paste0(Media, ????)))
在此先感谢。我欢迎任何建议。
'DAT%>%GROUP_BY(的indid,媒体)%>%突变(WantThis = paste0(媒体,ROW_NUMBER()))'大概 –
'DAT2 <- dat %>%GROUP_BY(的indid,媒体)%>%变异(WantThis = paste0(Media,row_number()))''生成'错误在rank(x,ties.method =“first”,na.last =“keep”): 参数“x”丢失, –
你有哪个'dplyr'版本?它对我很好。你可以尝试mutat(WantThis = paste0(Media,1:n()))'而不是 –