Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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
使用dplyr删除数据帧内的组_R_Dataframe_Dplyr - Fatal编程技术网

使用dplyr删除数据帧内的组

使用dplyr删除数据帧内的组,r,dataframe,dplyr,R,Dataframe,Dplyr,我需要帮助才能删除COL3中有1个唯一值的组。 这是df COL1 COL2 COL3 COL4 G1 SEQ1_-_eje.2 SEQB87 A G1 SEQ.2_+_eje.2 SQB83 B G1 SEQ.2_+_eje.2 SQB800 C G1 SEQ1_-_eje.2 SEB900 D G2 SEQJ_-_eje.9 SEQOPL E G2 SEQJ_-_eje.7

我需要帮助才能删除COL3中有1个唯一值的组。 这是df

 COL1 COL2           COL3   COL4
    G1   SEQ1_-_eje.2   SEQB87 A
    G1   SEQ.2_+_eje.2  SQB83  B 
    G1   SEQ.2_+_eje.2  SQB800 C
    G1   SEQ1_-_eje.2   SEB900 D
    G2   SEQJ_-_eje.9   SEQOPL E
    G2   SEQJ_-_eje.7   SEQOPL F
    G2   SEQJ_-_eQe.3   SEQOPL G
    G3   SEQQ_+_eje.2   LOP2   H
    G3   SEQQ_-_eje.2   LOPE   I
这里只有
G2
有一个唯一的
COL3
SEQOPL
,所以我删除了这个组,并保留分别具有
3
2 COL3
不同元素的
G1
G3

预期结果:

 COL1 COL2           COL3   COL4
    G1   SEQ1_-_eje.2   SEQB87 A
    G1   SEQ.2_+_eje.2  SQB83  B 
    G1   SEQ.2_+_eje.2  SQB800 C
    G1   SEQ1_-_eje.2   SEB900 D
    G3   SEQQ_+_eje.2   LOP2   H
    G3   SEQQ_-_eje.2   LOPE   I

也许可以删除
长度(唯一(df$COL3))=1的所有组

使用package
dplyr
tidyverse
试试这个:

df%>%
分组依据(COL3)%>%
变异(n=n())%>%
过滤器(n==1)%>%
选择(-n)
这给你

#一个tible:6 x 4
#组别:COL3[6]
COL1 COL2 COL3 COL4
1 G1序列1-序列2序列B87 A
2 G1序列2+工程2 SQB83 B
3 G1序列2+2 SQB800 C
4 G1序列2 SEB900 D
5 G3序列号2 LOP2 H
6 G3序号2坡度I
资料
df使用package
dplyr
tidyverse
试试这个:

df%>%
分组依据(COL3)%>%
变异(n=n())%>%
过滤器(n==1)%>%
选择(-n)
这给你

#一个tible:6 x 4
#组别:COL3[6]
COL1 COL2 COL3 COL4
1 G1序列1-序列2序列B87 A
2 G1序列2+工程2 SQB83 B
3 G1序列2+2 SQB800 C
4 G1序列2 SEB900 D
5 G3序列号2 LOP2 H
6 G3序号2坡度I
资料
df你的想法是正确的,诀窍是先按
COL1
分组:

df <- data.frame(COL1 = c(rep("G1", 4), rep("G2", 3), rep("G3", 2)),
                 COL3 = c("SEQB87", "SQB83", "SQB800", "SQB900",
                          rep("SEQOPL", 3), "LOP2", "LOPE"),
                 COL4 = LETTERS[1:9])

library(dplyr)

df %>% 
  group_by(COL1) %>% 
  filter(length(unique(COL3)) > 1)

# A tibble: 6 x 3
# Groups:   COL1 [2]
  COL1  COL3   COL4 
  <fct> <fct>  <fct>
1 G1    SEQB87 A    
2 G1    SQB83  B    
3 G1    SQB800 C    
4 G1    SQB900 D    
5 G3    LOP2   H    
6 G3    LOPE   I  
df%
分组依据(COL1)%>%
过滤器(长度(唯一(COL3))>1)
#一个tibble:6x3
#分组:COL1[2]
COL1 COL3 COL4
1 G1序列B87 A
2 G1 SQB83 B
3 G1 SQB800 C
4 G1 SQB900 D
5 G3 LOP2小时
6 G3洛普I

你的想法是正确的,诀窍是先按
COL1
分组:

df <- data.frame(COL1 = c(rep("G1", 4), rep("G2", 3), rep("G3", 2)),
                 COL3 = c("SEQB87", "SQB83", "SQB800", "SQB900",
                          rep("SEQOPL", 3), "LOP2", "LOPE"),
                 COL4 = LETTERS[1:9])

library(dplyr)

df %>% 
  group_by(COL1) %>% 
  filter(length(unique(COL3)) > 1)

# A tibble: 6 x 3
# Groups:   COL1 [2]
  COL1  COL3   COL4 
  <fct> <fct>  <fct>
1 G1    SEQB87 A    
2 G1    SQB83  B    
3 G1    SQB800 C    
4 G1    SQB900 D    
5 G3    LOP2   H    
6 G3    LOPE   I  
df%
分组依据(COL1)%>%
过滤器(长度(唯一(COL3))>1)
#一个tibble:6x3
#分组:COL1[2]
COL1 COL3 COL4
1 G1序列B87 A
2 G1 SQB83 B
3 G1 SQB800 C
4 G1 SQB900 D
5 G3 LOP2小时
6 G3洛普I