R中的行和列矩阵总和按组
row and column matrix sum in R by group
我有一个矩阵 matrix
,它具有两个级别的分组,如行和列名称中所示。
UKC1_SS1 UKC1_SS2 UKC2_SS1 UKC2_SS2
UKC1_SS1 1 2 3 4
UKC1_SS2 5 6 7 8
UKC2_SS1 9 10 11 12
UKC2_SS2 13 14 15 16
我想创建一个 table,其中列和行的总和基于列名和行名的前四位数字:
UKC1 UKC2
UKC1 14 22
UKC2 46 54
我尝试依次计算 rowsums
和 colSums
,
sum.matrix <- rowsum(matrix, substr(rownames(matrix), start = 1, stop = 4))
sum.matrix <- colSums(sum.matrix, substr(colnames(test), start = 1, stop = 4)
但我收到以下错误消息:
colSums(test, substr(colnames(test), start = 1, stop = 4)) 错误:
无效 'na.rm' 参数
当我 运行 sum(is.na)
我确认 matrix
中有 NA 值。
我们可以用 sum
和 xtabs
将 dimnames
更改为第 4 个字符的 substr
dimnames(m1) <- lapply(dimnames(m1), substr, 1, 4)
xtabs(Freq~ Var1 + Var2, as.data.frame.table(m1))
# Var2
#Var1 UKC1 UKC2
# UKC1 14 22
# UKC2 46 54
数据
m1 <- structure(c(1L, 5L, 9L, 13L, 2L, 6L, 10L, 14L, 3L, 7L, 11L, 15L,
4L, 8L, 12L, 16L), .Dim = c(4L, 4L), .Dimnames = list(c("UKC1_SS1",
"UKC1_SS2", "UKC2_SS1", "UKC2_SS2"), c("UKC1_SS1", "UKC1_SS2",
"UKC2_SS1", "UKC2_SS1.1")))
我有一个矩阵 matrix
,它具有两个级别的分组,如行和列名称中所示。
UKC1_SS1 UKC1_SS2 UKC2_SS1 UKC2_SS2
UKC1_SS1 1 2 3 4
UKC1_SS2 5 6 7 8
UKC2_SS1 9 10 11 12
UKC2_SS2 13 14 15 16
我想创建一个 table,其中列和行的总和基于列名和行名的前四位数字:
UKC1 UKC2
UKC1 14 22
UKC2 46 54
我尝试依次计算 rowsums
和 colSums
,
sum.matrix <- rowsum(matrix, substr(rownames(matrix), start = 1, stop = 4))
sum.matrix <- colSums(sum.matrix, substr(colnames(test), start = 1, stop = 4)
但我收到以下错误消息: colSums(test, substr(colnames(test), start = 1, stop = 4)) 错误: 无效 'na.rm' 参数
当我 运行 sum(is.na)
我确认 matrix
中有 NA 值。
我们可以用 sum
和 xtabs
将 dimnames
更改为第 4 个字符的 substr
dimnames(m1) <- lapply(dimnames(m1), substr, 1, 4)
xtabs(Freq~ Var1 + Var2, as.data.frame.table(m1))
# Var2
#Var1 UKC1 UKC2
# UKC1 14 22
# UKC2 46 54
数据
m1 <- structure(c(1L, 5L, 9L, 13L, 2L, 6L, 10L, 14L, 3L, 7L, 11L, 15L,
4L, 8L, 12L, 16L), .Dim = c(4L, 4L), .Dimnames = list(c("UKC1_SS1",
"UKC1_SS2", "UKC2_SS1", "UKC2_SS2"), c("UKC1_SS1", "UKC1_SS2",
"UKC2_SS1", "UKC2_SS1.1")))