gpt4 book ai didi

r - 获取矩阵的行(或列)表格计数(如 table() 中)

转载 作者:行者123 更新时间:2023-12-02 21:11:42 27 4
gpt4 key购买 nike

给定一个具有已知不同值(下面是“a”、“b”、“c”和“d”)的矩阵(或者可能是一个数据框),例如:

m<- matrix(c('a','b','a',
'b','c','a',
'b','a','a',
'b','c','d'), nrow=4,byrow=T)

> m
[,1] [,2] [,3]
[1,] "a" "b" "a"
[2,] "b" "c" "a"
[3,] "b" "a" "a"
[4,] "b" "c" "d"

如何获取每列(或行)的值的计数(或列比例)并将其输出放入(在本示例中)4x3 矩阵(或数据框)中,其中第一行是“m 等列中的 a':

      [,1] [,2] [,3]
a 1 1 3
b 3 1 0
c 0 2 0
d 0 0 1

想知道是否可以对 apply(m,2,table) 使用一些魔法?应该说 m 可以很大 (1e4 x 30),但不同值的数量始终小于 40。

最佳答案

我们使用 melt 将矩阵从宽矩阵转换为长矩阵来自library(reshape2)然后执行 table

library(reshape2)
table(melt(m)[3:2])
# Var2
#value 1 2 3
# a 1 1 3
# b 3 1 0
# c 0 2 0
# d 0 0 1

如果我们需要比例,我们可以使用 prop.table并相应地更改边距。

prop.table(table(melt(m)[3:2]),1)

另一个方便的功能是mtabulate来自library(qdapTools)

library(qdapTools)
t(mtabulate(as.data.frame(m)))

关于r - 获取矩阵的行(或列)表格计数(如 table() 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com