Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据列值条件多次按ID对行进行聚类_R_Dataframe_Dplyr_Mutate - Fatal编程技术网

R 根据列值条件多次按ID对行进行聚类

R 根据列值条件多次按ID对行进行聚类,r,dataframe,dplyr,mutate,R,Dataframe,Dplyr,Mutate,不久前,我在这篇文章中提出了一个相关的问题 假设我有以下df: data <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,1, 1, 1,1,1,1,1,1,1,1,1,1), Obs1 = c(1,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1), Control = c(0,3,3,1,12,1,1,1,36,13,1,1,2,24,2,2,48,24,20

不久前,我在这篇文章中提出了一个相关的问题

假设我有以下df:

data <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,1, 1, 1,1,1,1,1,1,1,1,1,1),
               Obs1 = c(1,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1),
               Control = c(0,3,3,1,12,1,1,1,36,13,1,1,2,24,2,2,48,24,20,21,10,10),
               ClusterObs1 = c(1,1,1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,5,5,5,5,6))

data我不太知道如何使用whith()和rle()函数,但我必须使用ifelse来解决这个问题

data <- data %>% mutate (aux = ifelse (Control>12 & Obs1 == 1 & lag(Obs1) ==1,1,0),
                         DesiredResultClusterObs1 = ClusterObs1 + cumsum(aux))
data%变异(aux=ifelse(控制>12&Obs1==1&lag(Obs1)==1,1,0),
DesiredResultClusterObs1=ClusterObs1+cumsum(辅助))
aux变量不是必需的,它只是帮助逐步查看。您也可以执行以下操作

data <- data %>% mutate (DesiredResultClusterObs1 =
                         ClusterObs1 + 
                         cumsum(ifelse (Control>12 & Obs1 == 1 & lag(Obs1) ==1,1,0)))
数据%突变(DesiredResultClusterObs1=
ClusterObs1+
累积和(如果其他(控制>12,Obs1==1,滞后(Obs1)==1,1,0)))
data <- data %>% mutate (DesiredResultClusterObs1 =
                         ClusterObs1 + 
                         cumsum(ifelse (Control>12 & Obs1 == 1 & lag(Obs1) ==1,1,0)))