使用dplyr删除数据帧内的组
我需要帮助才能删除COL3中有1个唯一值的组。 这是df使用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
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的所有组?使用packagedplyr
或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使用packagedplyr
或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