【问题标题】:How to subset the table data depending on the multi columns in R?如何根据 R 中的多列对表数据进行子集化?
【发布时间】:2019-08-30 16:35:28
【问题描述】:

我有一个 223k x 5 列的数据框。我想比较成对的列。

数据框小例子

NAME    COLA    COLB    COLC    COLD  
1         T       C       G       A   
2         G       C       G       A   
3         A       C       G       A   
4         A       G       A       G   
5         A       C       A       G   
6         A       G       G       A   
7         A       G       NA      NA  
8         T       C       NA      NA   
9         C       T       A       G   
10        G       A       C       T     
11        A       G       T       C   
12        T       C       C       T   
13        C       T       C       T    

我想将 COLC 和 COLD 与 COLA 和 COLB 进行比较,并将数据子集到 groupS 中。喜欢

 GROUP 1  
 NAME    COLA    COLB    COLC    COLD  
 1         T       C       G       A   
 10        G       A       C       T   
 9         C       T       A       G   
 11        A       G       T       C  

 GROUP 2  
 NAME    COLA    COLB    COLC    COLD   
 2         G       C       G       A   
 3         A       C       G       A   
 5         A       C       A       G   

 GROUP 3  
 NAME    COLA    COLB    COLC    COLD   
 4         A       G       A       G   
 6         A       G       G       A   
 12        T       C       C       T    
 13        C       T       C       T    

 GROUP 4    
 NAME    COLA    COLB    COLC    COLD    
 7        A       G       NA      NA  
 8        T       C       NA      NA  

我尝试使用 if 语句进行处理,但它对我不起作用。我也尝试使用子集函数,但列中的因子不一样。 COLA 和 COLB 是 6 个因素,COLC 和 COLD 是 4 个因素。

for (i in seq (Tab2$NAME){
if (Tab2$COLC == Tab2$COLA || Tab2$COLC == Tab2$COLB){
if (Tab2$COLD == Tab2$COLA || Tab2$COLD == Tab2$COLB){
  Tab3 <- Tab2[i,]
  Tab4 <- rbind(Tab4, Tab3) 
  }
 }   
 if (Tab2$COLC != Tab2$COLA && Tab2$COLC != Tab2$COLB){
if (Tab2$COLD != Tab2$COLA && Tab2$COLD != Tab2$COLB){
  Tab5 <- Tab2[i,]
  Tab6<- rbind(Tab6, Tab5) 
  }
 }     
 }

【问题讨论】:

  • 您为每个组使用的逻辑是什么?我无法从您发布的代码中破译它。

标签: r subset


【解决方案1】:

子集的工作方式如下例所示:

# Create dataframe
df = read.table(text = '
NAME    COLA    COLB    COLC    COLD  
1         T       C       G       A   
2         G       C       G       A   
3         A       C       G       A   
4         A       G       A       G   
5         A       C       A       G   
6         A       G       G       A   
7         A       G       NA      NA  
8         T       C       NA      NA   
9         C       T       A       G   
10        G       A       C       T     
11        A       G       T       C   
12        T       C       C       T   
13        C       T       C       T    
', header = T)

# Example grouping
group1 <- subset(df, df$COLC == df$COLA | df$COLC == df$COLB)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    相关资源
    最近更新 更多