微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用特定列的值从其他行中减去,但列索引在R中的文件之间移动

如何解决使用特定列的值从其他行中减去,但列索引在R中的文件之间移动

数据 我也有癌症患者总数(case_totals)和非癌症患者总数(control_totals),在这种情况下分别为100和1000。

Variant  Cancer IBD AKI CKD CCF IHD
A1         0    5   4   0   0   4
A2         0    8   5   9   0   7
A3         20   9   6   7   0   3
B5         7    2   0   6   5   4
K7         9    1   8   4   2   5
L9         0    0   6   3   3   1

所需结果-两个表: 表1:

 Variant     case_total not_seen_in_cases_total control_total not_seen_in_control_total
    A1             0           100                    13                  987  
    A2             0           100                    25                  975 
    A3             20          80                     25                  975
    B5             7           93                     17                  983
    K7             9           91                     20                  980
    L9             0           100                    13                  987

表2:

case_total_in_gene  not_seen_in_gene_cases      control_total_in_gene control_total_not_in_gene
36                         64                            113                 887

然后,我将在两个表之间运行一条Fisher,以获取我可以做的每个变体和每个基因的p.value。

我的问题是我有多个这样的数据集,并且在每个输入列的顺序上都是不同的。目前,我一直在使用:

ncol(dt) #to get the total number of columns as in reality the table is very large
which(colnames(dt)=='Cancer') #get the index column 
dt$control_total <- (rowSums(dt[,2:7])) - rowSums(dt[,2]) #get a control totals per row column 

然后设置dt,然后仅使用减法将其他列添加进去,例如dt$not_seen_in_control_total <- 1000 - dt$control_total

这不适用于移动列索引,而我想理想地使用commandArgs在数百个文件中运行它。

最终我该如何引用一列始终相同的名称,但在诸如RowSums等的函数中却位于不同的位置?

非常感谢

解决方法

您可以通过名称中的位置或样式或通过指定列范围来选择列名称。这取决于您的数据结构。

library(dplyr)

table1 <- df %>%
  mutate(control_total = rowSums(select(.,setdiff(2:ncol(.),match('Cancer',names(.)))))) %>%
  transmute(Variant,Cancer,not_seen_in_cases_total = 100 - Cancer,control_total,not_seen_in_control_total = 1000 - control_total)
table1

#  Variant Cancer not_seen_in_cases_total control_total not_seen_in_control_total
#1      A1      0                     100            13                       987
#2      A2      0                     100            29                       971
#3      A3     20                      80            25                       975
#4      B5      7                      93            17                       983
#5      K7      9                      91            20                       980
#6      L9      0                     100            13                       987

table2 <- table1 %>%
  summarise(case_total_in_gene = sum(Cancer),not_seen_in_gene_cases = 100 - case_total_in_gene,control_total_in_gene = sum(control_total),control_total_not_in_gene = 1000 - control_total_in_gene)

table2
# case_total_in_gene not_seen_in_gene_cases control_total_in_gene control_total_not_in_gene
#1                 36                     64                   117                       883

数据

df <- structure(list(Variant = c("A1","A2","A3","B5","K7","L9"
),Cancer = c(0L,0L,20L,7L,9L,0L),IBD = c(5L,8L,2L,1L,AKI = c(4L,5L,6L,6L),CKD = c(0L,4L,3L),CCF = c(0L,IHD = c(4L,3L,1L)),class = "data.frame",row.names = c(NA,-6L))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?