首页 > 解决方案 > 如何从 R 中非常大的频率表中提取特定频率?

问题描述

我正在制作基因在我的测序样本中出现的次数的频率表(来自一长串基因序列)。我一直很好地使用 ftable() 函数,但我正在缩小搜索范围,并希望专注于数千个特定基因中的几个。

我目前的工作流程如下:

  1. 我为样本中的所有基因创建频率表。
  2. 将此表导出到 csv。
  3. 在 Excel 中使用 control+f 拉出我感兴趣的特定基因频率。

考虑到我计划分析的样本数量,这似乎非常低效。

有没有办法使用 R 提取频率表中的某些条目?

到目前为止,我已经尝试了 [c(, , ,)] 和 a[, , ,] 方法无济于事。我一直收到“意外符号”错误。

我希望问题不在于基因名称中的连字符,因为我无法删除它。

我附上了我的 R 窗口的屏幕截图以供参考。

这是我的R窗口的屏幕截图 这是频率表属性

structure(list(Sequence.number = c(1L, 2L, 4L, 5L, 6L, 7L, 10L, 11L, 13L, 14L), Variable = structure(c(25L, 2L, 22L, 19L, 19L, 19L, 7L, 1L, 25L, 19L), .Label = c("V1-13", "V1-18", "V1-2", "V1-21", "V1-36", "V1-39", "V1-42", "V10D-9", "V11-25", "V12D-36", "V12D-56", "V15D-54", "V1D-15", "V1D-73", "V3-20", "V3D-30", "V4D-24", "V4D-43", "V4D-60", "V6-31", "V6-35", "V6-4", "V6D-40", "V6D-76", "V8-30", "V8-46", "V8-5", "V9-15", "V9-23", "V9D-2" ), class = "factor"), Diversity = structure(c(13L, 17L, 2L, 5L, 3L, 5L, 2L, 14L, 13L, 15L), .Label = c("", "D1", "D1T1", "D1T2", "D2", "D2D", "D2T1", "D2T1D", "D2T2", "D3", "D3T1", "D3T1D", "D4", "D4T1D", "D5", "D5T1D", "D6"), class = "factor"), Joining = structure(c(1L, 7L, 8L, 8L, 4L, 8L, 1L, 9L, 1L, 8L), .Label = c("J1", "J1T1", "J1T2", "J2", "J2D", "J2T1", "J3", "J4", "J5", "J6D"), class = "factor")), row.names = c(NA, 10L), class = "data.frame")

标签: rfrequency-table

解决方案


使用上面的例子:

正如你所做的正确,你table使用下面的 3 个变量,这样你就不需要重复 WeekZero$ 3 次:

Freq = with(WeekZero,table(Variable,Diversity,Joining))

我们查看表格,然后继续:

ftable(Freq)
                   Joining J1 J1T1 J1T2 J2 J2D J2T1 J3 J4 J5 J6D
Variable Diversity                                              
V1-13                       0    0    0  0   0    0  0  0  0   0
         D1                 0    0    0  0   0    0  0  0  0   0
         D1T1               0    0    0  0   0    0  0  0  0   0
         D1T2               0    0    0  0   0    0  0  0  0   0
         D2                 0    0    0  0   0    0  0  0  0   0
         D2D                0    0    0  0   0    0  0  0  0   0
         D2T1               0    0    0  0   0    0  0  0  0   0

要从“V1-13”中获取计数,请返回表对象,在第一个逗号之前指定它,这指的是数组的“z”维度:

Freq["V1-13",,]

要获得 V1-13 和 Diversity 为 D1,请选择下一个逗号所在的行:

Freq["V1-13","D1",]
  J1 J1T1 J1T2   J2  J2D J2T1   J3   J4   J5  J6D 
   0    0    0    0    0    0    0    0    0    0 

要获得 V1-13 并加入 == J1:

Freq["V1-13",,"J1"]
         D1  D1T1  D1T2    D2   D2D  D2T1 D2T1D  D2T2    D3  D3T1 D3T1D    D4 
    0     0     0     0     0     0     0     0     0     0     0     0     0 
D4T1D    D5 D5T1D    D6 
    0     0     0     0 

推荐阅读