我试图弄清楚如何获取这个矩阵并向包含行名称的列添加标签(因为使用 colnames 命令时这不被视为“列”)。
这是我的代码(df 和表名称是通用的,以避免识别我正在使用的包含敏感数据的数据集)。请注意,输出的左上角此时为空。我的目标是用“年”这个词填充那个空白。
#making sure labels are properly ordered
matrix1 <- as.matrix(table(df$yrsvar)[c("< 1", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "10+", "Don't Know")])
#columnnames
colnames(matrix1) <- (c("Percent"))
#making vertical, setting as percentages
as.matrix(prop.table(matrix1)) %>% '*' (100) %>% round(2)
输出:
Percent
< 1 12.39
1 2.65
2 8.85
3 7.96
4 6.19
5 5.31
6 2.65
7 2.65
8 4.42
9 1.77
10 7.08
10+ 36.28
Don't Know 1.77
我尝试使用 colnames 命令,但该列不被视为可以标记的列。
我尝试了一些通用解决方案,但都要求我将矩阵转换为我想避免的数据帧。作为矩阵保存在这里很重要。
@thelatemail 应该已经发布,但我把 MCVE 记录下来:
mdat <- matrix(c(1,2,3, 11,12,13),
nrow = 2, ncol = 3, byrow = TRUE,
dimnames = list('rows'=c("row1", "row2"),
c("C.1", "C.2", "C.3"))); mdat
#Naming both the rownames and the colnames
mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE,
dimnames = list("rows"= c("row1", "row2"),
"cols"=c("C.1", "C.2", "C.3")))
mdat
我想我需要尝试创建一个函数来更改已存在的矩阵内的 rownames 对象的名称,但这应该不会太难。人们需要研究矩阵的属性部分。
对于现有矩阵
mdat
,可以使用它为 rownames
的“列”添加名称:
#Generalized for a multi-column matrix
dimnames(mdat) <- list("Years" = rownames(mdat), dimnames(mdat)[[2]])
#---------
mdat
Years C.1 C.2 C.3
row1 1 2 3
row2 11 12 13
#--- the next succeeds but is not quite as elegant or complete
names( attributes(mdat)$dimnames ) <- list("rows", NULL)
#---
> mdat
NULL
rows C.1 C.2 C.3
row1 1 2 3
row2 11 12 13
您可以使用
dimnames
和 names
的组合,如下所示:
mat <- matrix(sample(3), 3)
mat
[,1]
[1,] 1
[2,] 3
[3,] 2
添加列名称:
colnames(mat) <- "numbers"
mat
numbers
[1,] 1
[2,] 3
[3,] 2
添加行名称
rownames(mat) <- letters[1:3]
mat
numbers
a 1
b 3
c 2
单独添加列标题
names(dimnames(mat))[2] <-"columns"
mat
columns
NA numbers
a 1
b 3
c 2
单独添加行标题
names(dimnames(mat))[1] <- "rows"
mat
columns
rows numbers
a 1
b 3
c 2
同时更改标题:
names(dimnames(mat)) <- c("AA", "BB")
mat
BB
AA numbers
a 1
b 3
c 2
等...