在R中按条件和分组粘贴

在R中按条件和分组粘贴,r,dplyr,R,Dplyr,我有一个数据框架,包括样本名称、测量模式和测量开始时间。测量是连续的,使用所有模式依次测量每个样品 ##example df <- data.frame(sample= rep(c(1:10),each = 4,length.out=100), mode =rep_len(c("A","B","C","D"),length.out = 100), time= seq(strptime("2018-1-1 0:0:0","%

我有一个数据框架,包括样本名称、测量模式和测量开始时间。测量是连续的,使用所有模式依次测量每个样品

##example
df <- data.frame(sample= rep(c(1:10),each = 4,length.out=100),
                 mode =rep_len(c("A","B","C","D"),length.out = 100),
                 time= seq(strptime("2018-1-1 0:0:0","%Y-%m-%d %H:%M:%S"),by= dseconds(200),length.out=100))

但是,此代码不起作用,此外,它将粘贴所有开始时间,而不是与模式“B”对应的时间

在mutate命令中,不需要引用数据帧(df)。您只需要引用列ID。我相信这段代码对您有用

 df%>%
  group_by(group)%>%
  mutate(ID = paste(sample,as.character(substr(time, start = 12,stop=16)),sep="_"))

groupby
步骤之后,不要使用
df$sample
,只需执行
sample
,因为它将使用列中的所有元素(按操作断开分组),并且类似地
time
而不是
df$time
。此外,基于操作
df%>%的变异,我认为这里不需要
groupby
(ID=paste(样本,substr(time,start=12,stop=16),sep=“\u”))
谢谢!但是如何才能仅用每个组的样本名称和模式“B”的开始时间之间的组合来填充该列?基本上,我需要每个组的唯一ID
library(dplyr)
df %>%
  group_by(group) %>%
  mutate(ID = paste(df$sample,
                    as.character(substr(df$time, start = 12,stop=16)),sep="_"))
 df%>%
  group_by(group)%>%
  mutate(ID = paste(sample,as.character(substr(time, start = 12,stop=16)),sep="_"))