【问题标题】:How do I extract specific frequencies from very large frequency tables in R?如何从 R 中非常大的频率表中提取特定频率?
【发布时间】:2020-06-08 08:14:41
【问题描述】:

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

我目前的工作流程如下:

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

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

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

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

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

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

Here's a screenshot of my R window Here are the frequency table attributes

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")

【问题讨论】:

  • 另一种选择是您只需将其转换为 data.frame, df = as.data.frame(WeekZero) ; df[df[,1]=="V11-25",]
  • 我现在将添加属性(选项卡)的屏幕截图!
  • 嘿,莫莉,不要截屏。好的,我知道如何解决您的问题。你需要这样做,dput(head(WeekZero,10)),然后在你的 R 控制台中,会弹出一些类似 structure = .. 的东西。复制并粘贴该文本,并将其作为帖子的一部分
  • 这样,我可以得到确切的名字
  • 会的。原始表的属性(在计算频率之前)没有帮助,因为它们不会在 R 达到最大打印之前通过序列 ID 号。

标签: r frequency-table


【解决方案1】:

以上面的为例:

正如你所做的那样,你 table 3 个变量,下面我使用 with 这样你就不需要重复 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 

【讨论】:

  • 抱歉,我没有正确解释我的问题。我会编辑帖子。创建频率表后,我将 Excel 中的变量、多样性和连接列(可能也不是最好的方法,但需要两秒钟)合并到一个标题为 Family 的列中。我对此合并列的特定频率(变量、多样性和连接组合)感兴趣
  • 是的,你想说“V1-13 + J1 + D5”对吗?所以如果你做 Freq["V1-13","D5","J1"],你会得到这个 VDJ 组合的确切频率:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2016-07-01
  • 2012-06-24
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
相关资源
最近更新 更多