我正在尝试根据另一个数据框(PvalueData)中p值的标准过滤掉数据框(MainData)中的行。因此,我想要的是:如果一行中超过50%的列的p值> 0.05(PvalueData),则该行将从主数据帧(MainDatA)中删除。

可以说,这是我的数据:

主数据:

        C1   C2   C3   C4   C5
Gene1   70   54   54   75   75
Gene2   23   18   16   54   15
Gene3   43   93   90   43   92
Gene4   32   50   23   13   45
Gene5   44   53   46   34   47
Gene6   42   34   53   85   43
Gene7   49   55   67   49   89
Gene8   25   45   49   34   35
Gene9   19   16   54   53   94


PvalueData:

        C1     C2     C3     C4     C5
Gene1   0.04   0.01   0.01   0.01   0.01
Gene2   0.01   0.01   0.01   0.02   0.01
Gene3   0.01   0.07   0.09   0.01   0.06
Gene4   0.01   0.03   0.06   0.01   0.02
Gene5   0.04   0.01   0.07   0.08   0.01
Gene6   0.09   0.07   0.01   0.06   0.06
Gene7   0.10   0.07   0.01   0.01   0.06
Gene8   0.01   0.01   0.02   0.01   0.01
Gene9   0.09   0.01   0.07   0.08   0.06


所以我的结果文件应该看起来像:

结果:

        C1   C2   C3   C4   C5
Gene1   70   54   54   75   75
Gene2   23   18   16   54   15
Gene4   32   50   23   13   45
Gene5   44   53   46   34   47
Gene8   25   45   49   34   35


我确实尝试过这样的事情:

check = if (PvalueData[!rowSums(PvalueData>thres) > ncol(PvalueData)*.5], MainData)


但是无法真正解决。

最佳答案

这是使用rowMeans的答案:

df[rowMeans(df2 < 0.05) > 0.5,]
      C1 C2 C3 C4 C5
Gene1 70 54 54 75 75
Gene2 23 18 16 54 15
Gene4 32 50 23 13 45
Gene5 44 53 46 34 47
Gene8 25 45 49 34 35


这是代码的快速细分:


df2 < 0.05将data.frame强制转换为由逻辑元素(TRUE和FALSE)组成的矩阵,其中如果元素符合您的p值标准,则为TRUE。
rowMeans计算每一行的这些逻辑值的平均值。
这些手段用于根据第二标准对主数据帧进行子集化。


数据

df <- read.table(header=T, text="C1   C2   C3   C4   C5
Gene1   70   54   54   75   75
Gene2   23   18   16   54   15
Gene3   43   93   90   43   92
Gene4   32   50   23   13   45
Gene5   44   53   46   34   47
Gene6   42   34   53   85   43
Gene7   49   55   67   49   89
Gene8   25   45   49   34   35
Gene9   19   16   54   53   94")

df2 <- read.table(header=T, text="C1     C2     C3     C4     C5
Gene1   0.04   0.01   0.01   0.01   0.01
Gene2   0.01   0.01   0.01   0.02   0.01
Gene3   0.01   0.07   0.09   0.01   0.06
Gene4   0.01   0.03   0.06   0.01   0.02
Gene5   0.04   0.01   0.07   0.08   0.01
Gene6   0.09   0.07   0.01   0.06   0.06
Gene7   0.10   0.07   0.01   0.01   0.06
Gene8   0.01   0.01   0.02   0.01   0.01
Gene9   0.09   0.01   0.07   0.08   0.06")

08-27 18:45
查看更多