【问题标题】:frequency of each row in data.table for a specific column特定列的 data.table 中每一行的频率
【发布时间】:2018-09-18 18:56:21
【问题描述】:

我有以下data.table。

    dat <- structure(list(kmers = c("TTTTTTTTTTTT", "TCCATTCCATTC", "TTCCATTCCATT", 
"CCATTCCATTCC", "ATTCCATTCCAT", "CATTCCATTCCA", "TTTTATTATTTT", 
"AAAATTATAAAA", "AAGACAATTTCT", "AAAGACAATTTC"), counts = c(16361L, 
10090L, 9599L, 9021L, 8516L, 8325L, 5739L, 5642L, 5378L, 5326L
)), .Names = c("kmers", "counts"), class = c("data.table", "data.frame"
), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x29f1d78>)

这是桌子

           kmers counts
 1: TTTTTTTTTTTT  16361
 2: TCCATTCCATTC  10090
 3: TTCCATTCCATT   9599
 4: CCATTCCATTCC   9021
 5: ATTCCATTCCAT   8516
 6: CATTCCATTCCA   8325
 7: TTTTATTATTTT   5739
 8: AAAATTATAAAA   5642
 9: AAGACAATTTCT   5378
10: AAAGACAATTTC   5326

我想将列数除以所有计数的总和。对于数据框,我会做

total=sum(dat$counts)
freq <-  dat$counts/total

我怎样才能为 data.table 做到这一点?每个 kmers 都是唯一的,所以我不希望 kmers 列中的值重复。

例如,第一行是16361/sum(dat$counts)

【问题讨论】:

  • dat[, freq := counts / sum(counts)]
  • 感谢更新!!!

标签: r data.table


【解决方案1】:

或者使用正常的基本语法仍然有效:

dat$countProportion = dat$counts / sum(dat$counts) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多