【问题标题】:I have 300,000 columns in a tsv file, I only need 10,000 of them.我在 tsv 文件中有 300,000 列,我只需要其中的 10,000 列。
【发布时间】:2023-04-04 15:03:02
【问题描述】:

它们都以“rsid_set(variable)”开头。我几乎没有编码经验,但一直在尝试使用 R 和 python。有什么快速的方法可以获得我想要的那些列吗?

跟进:有没有办法把每一列的均值转化为10000个值的正态分布?

【问题讨论】:

    标签: python r parsing tsv


    【解决方案1】:
    # read in
    df <- read.tsv("path/to/your/file")
    
    # select only colnames beginning with rsid_set
    df <- df[grep("^rsid_set",colnames(df)),] 
    
    Your follow-up, I don't understand. You'll have to clarify what you want.
    
    # Take the means of each column:
    means <- colMeans(df)
    
    # normal distribution with 10k values
    norms <- rnorm(10e3)
    

    【讨论】:

    • 太棒了!这看起来很棒。我一直在使用 read.table,它会起作用还是会更慢?我实际上正在改变我的后续行动。这些列中的值是 0-3 之间的数字(例如 1.27、0.76、2.1)。我想找到每列中超过 2.5 的数据数。所以有 10,000 列。假设有 3,000 行。假设一列中有 12 个数字超过 2.5 。我想找出每列有多少数字超过 2.5,然后对该数字进行正态分布。这有意义吗?
    • 我真的很讨厌告诉人们 RTM,但我认为花接下来的 4 小时阅读一些基本的 R 教程会更好。
    • 抱歉后续问题,我在另一个线程中询问并得到了答案。我想我只是在问 read.table 是否比 read.csv 慢得多?我知道是这样,但是对于 300,000 列和 ~4000 行文件的差异的粗略估计是多少?
    • read.csv IS read.table 具有不同的功能默认值,即:sep=","
    • 这是表示行首的正则表达式。 $,结束。您可以在?regex 中找到所有可用正则表达式的描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 2015-09-08
    • 1970-01-01
    • 2016-12-20
    • 2020-04-14
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多