【问题标题】:removing rows in a text file based on the occurrences of values using python or R使用python或R根据值的出现删除文本文件中的行
【发布时间】:2014-12-21 06:51:20
【问题描述】:

我有一个包含 32000 行和 60 列的大文本文件。 (行是基因,列是样本,每个单元格包含每个样本中每个基因的值)。我想删除那些大于 10 乘以 2 且小于 2 的基因(行)。这意味着例如,如果第一行在至少 10 个样本(列)中具有 2 或小于 2(基因值)我想要去掉它。我认为首先它应该遍历行以找到那些具有 2 或小于 2 的列并为每一行计算它们。如果计数至少为 10,则该行将被删除。

【问题讨论】:

  • 你测试过R代码吗?
  • 编辑后的数字是多少?
  • 抱歉,没有正确理解问题。

标签: python r file rows


【解决方案1】:

R,你可以试试

indx <- rowSums(d1 <=2)
d1[indx <10,] 

数据

set.seed(145)
d1 <- as.data.frame(matrix(sample(-2:5,20*30, replace=TRUE), ncol=20)) 

【讨论】:

    【解决方案2】:

    你可以在 python 中做类似的事情(代码未测试):

    假设文件都是数字和空格分隔的。

    for line in open(input_filepath, 'r'):
        values = line.split(' ')
        if len([value for value in values if float(value) <= 2]) <= 10:
            output_file.write(line)
    

    【讨论】:

    • 谢谢。这一行 (if len([value for values if value
    • 现在给出:NameError: name 'output_file' is not defined
    • 是的,这只是一个不完整的示例代码,你应该定义输出文件如下:output_file = open(output_filepath, 'w')
    • 谢谢。我使用了这段代码,但仍有许多行包含许多小于 2 的值,包括零和小数
    • 现在它给此错误:ValueError异常:无效字面浮法():ENSG00000000003.10 17.83196398 69.91920499 95.61821179 279.89049 74.80702449 122.5556208 144.8049767 68.68034587 73.67798573 89.95469195 81.85856972 126.9733354 64.93879738 73.03579221 29.4107548 116 跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多