在R中按列创建标高计数?
我想得到一个矩阵中的等位基因计数,水平为“a”,“T”,“C”,“G”。我希望这是做列明智的,并打印到一个新的数据集。我在R怎么做?我在下面附上了数据集的图片:在R中按列创建标高计数?,r,R,我想得到一个矩阵中的等位基因计数,水平为“a”,“T”,“C”,“G”。我希望这是做列明智的,并打印到一个新的数据集。我在R怎么做?我在下面附上了数据集的图片: 由于您的数据不可复制,让我们创建一个兼容的数据集: set.seed(69) m V1 V2 V3 V5 V6 V7 V8 V9 V10 #>1 G C C G C A T A T A #>2 A A C A T G C #>3T T T C G G #>4 C C G G A A A G A #>5gca-gct-act #>6G T
由于您的数据不可复制,让我们创建一个兼容的数据集:
set.seed(69)
m V1 V2 V3 V5 V6 V7 V8 V9 V10
#>1 G C C G C A T A T A
#>2 A A C A T G C
#>3T T T C G G
#>4 C C G G A A A G A
#>5gca-gct-act
#>6G T T A A C A
#>7 A G T G A A A A C A
#>8 T C A G A A T A T
#>9 T T C T C A T G
#>10TCTCTGCA
我们可以得到这样的答案:
t(apply(m, 2, function(x) table(factor(x, levels = c("A", "C", "T", "G")))))
#> A C T G
#> V1 2 1 4 3
#> V2 1 5 3 1
#> V3 3 3 3 1
#> V4 2 1 4 3
#> V5 2 2 2 4
#> V6 6 2 2 0
#> V7 5 2 2 1
#> V8 5 1 2 2
#> V9 1 4 2 3
#> V10 5 1 2 2
由(v0.3.0)于2020年11月9日创建,我们也可以通过
取消列出数据集并调用表一次来实现
table(c(col(m)), unlist(m))
-输出
# A C G T
# 1 2 1 3 4
# 2 1 5 1 3
# 3 3 3 1 3
# 4 2 1 3 4
# 5 2 2 4 2
# 6 6 2 0 2
# 7 5 2 1 2
# 8 5 1 2 2
# 9 1 4 3 2
# 10 5 1 2 2
数据
set.seed(69)
m Maybe:apply(m,2,table)
?我们尝试过,但每列都有不同的级别-因此V30有A和C,V40有C和G等。您的预期输出应该是什么样的@上面的GKi解决方案似乎适合我。也许您需要应用(m,2,函数(x)表(因子(x,级别=c(“A”,“c”,“T”,“G”))))
预期输出根据Allan Cameron的评论@GKi解决方案确实有效,但在遗传背景下不起作用
set.seed(69)
m <- as.data.frame(matrix(sample(c("A", "C", "T", "G"), 100, TRUE), nrow = 10))