Я пытаюсь рассчитать процент 0,1,2,3 каждого столбца в r, используя комбинацию prop.table
и do.call
.
tblpercent <- function(x){
round(prop.table(table(x)),4)
}
do.call(cbind,lapply(A,tblpercent))
Однако некоторые столбцы не содержат полного набора 0-3, например, данные выглядят как A:
A <- data.frame(matrix(
c(0,1,2,1,2,3,2,2,2,3,3,3,1,1,0,3,3,3),
nrow=6, ncol=3, byrow = TRUE))
И он вернет ошибку следующим образом:
X1 X2 X3
0 0.1667 0.3333 0.1667
1 0.3333 0.3333 0.3333
2 0.1667 0.3333 0.5000
3 0.3333 0.3333 0.1667
Я понимаю, что ошибка связана с отсутствием 0 в X2, 1 в X3, поэтому возвращаемый процент содержит только 3 поля. Можно ли это легко исправить, или мне следует переписать всю функцию?
Правильный вывод должен быть таким:
X1 X2 X3
0 0.1667 0.0000 0.1667
1 0.3333 0.3333 0.0000
2 0.1667 0.3333 0.3333
3 0.3333 0.3333 0.5000