我有一张桌子:
X1 X2 X3
Y1 10 12 15
Y2 45 5 23
Y3 12 47 56
我如何计算每一行的总和,并在每个值附近写下该总和的百分比。 例如: X1%X2%X3%
Y1 10 27% 12 32% 15 40.5%
Y2 45 .. 5 .. 23..
Y3 12 .. 47 .. 56..
答案 0 :(得分:1)
你可以使用。如果dat
是数据集(此示例中dat
是data.frame)
v1 <- paste0(round(prop.table(as.matrix(dat),margin=1),2)*100,"%") #suggested by @Ananda Mahto
或
v2 <- matrix(paste0(100*round(as.matrix(dat)/rowSums(dat),2),"%"),3,3)
cbind(dat, v1)[c(rbind(1:3,4:6))]
# X1 1 X2 2 X3 3
# Y1 10 27% 12 32% 15 41%
# Y2 45 62% 5 7% 23 32%
# Y3 12 10% 47 41% 56 49%
对于5行和4列,步骤是相同的。例如:
set.seed(42)
dat1 <- as.data.frame(matrix(sample(5:70, 5*4,replace=T),ncol=4))
v1 <- paste0(round(prop.table(as.matrix(dat1),margin=1),2)*100,"%")
或
v2 <- matrix(paste0(100*round(as.matrix(dat1)/rowSums(dat1),2),"%"),nrow=5,ncol=4)
n <- ncol(dat1)
cbind(dat1,v2)[c(rbind(1:n,(n+1):(n*2)))]
# V1 1 V2 2 V3 3 V4 4
# 1 65 32% 39 19% 35 17% 67 33%
# 2 66 28% 53 22% 52 22% 69 29%
# 3 23 20% 13 11% 66 58% 12 11%
# 4 59 36% 48 29% 21 13% 36 22%
# 5 47 27% 51 29% 35 20% 41 24%