Вы можете сделать это несколькими способами, в том числе более новыми и более «аккуратными», но когда решение в базе R простое, я предпочитаю такой подход:
rbind(data, colSums(data[1:3,]),colSums(data))
A B C D
V1 4 1 1 3
V2 4 2 2 2
V3 4 3 4 4
V4 4 4 4 1
5 12 6 7 9
6 16 10 11 10
Если вы хотите, чтобы имена строк соответствовали желаемому выходному примеру, это 1 вариант:
data <- rbind(data, colSums(data[1:3,]),colSums(data))
rownames(data) <- c("V1", "V2", "V3", "V4", "V1:V3Sum", "V1:V4Sum")
A B C D
V1 4 1 1 3
V2 4 2 2 2
V3 4 3 4 4
V4 4 4 4 1
V1:V3Sum 12 6 7 9
V1:V4Sum 16 10 11 10
ОТНОСИТЕЛЬНЫЕ ЧАСТОТЫ
Вы просите еще несколько строк, чтобы отразить итоговую статистику (относительные частоты).Я считаю, что это то, что вы хотели:
rbind(data,
data[1,]/data[5,],
data[2,]/data[5,],
data[3,]/data[5,],
data[4,]/data[5,],
data[5,]/data[6,])
A B C D
V1 4.0000000 1.0000000 1.0000000 3.0000000
V2 4.0000000 2.0000000 2.0000000 2.0000000
V3 4.0000000 3.0000000 4.0000000 4.0000000
V4 4.0000000 4.0000000 4.0000000 1.0000000
V1:V3Sum 12.0000000 6.0000000 7.0000000 9.0000000
V1:V4Sum 16.0000000 10.0000000 11.0000000 10.0000000
V11 0.3333333 0.1666667 0.1428571 0.3333333
V21 0.3333333 0.3333333 0.2857143 0.2222222
V31 0.3333333 0.5000000 0.5714286 0.4444444
V41 0.3333333 0.6666667 0.5714286 0.1111111
V1:V3Sum1 0.7500000 0.6000000 0.6363636 0.9000000