Puedes seguir el tutorial por vídeo en https://youtu.be/wood-GwTXeo
Vemos el ejemplo, basándonos en los datos del ensayo de patatas. Establezco el directorio de trabajo.
setwd("C:/Users/Raul Ortiz/Documents/Expression/Expression Encoder/Output/34 Tabla de frecuencias II")
Importo los datos.
DatosPatata = read.table("Potato.csv", header=T, sep="," , dec=".")
head (DatosPatata)
## Tratamiento Variedad Peso40 Peso41a45 Peso46a60 PesoMas61 Numero40
## 1 Testigo Krone 380 1120 16180 2360 9
## 2 Testigo Krone 2000 1480 15600 2340 42
## 3 Testigo Krone 820 920 14840 6580 16
## 4 Testigo Krone 130 1120 17180 11780 3
## 5 Testigo Krone 1840 1240 12580 7040 22
## 6 Tratado Krone 700 880 19120 3060 13
## Numero41a45 Numero46a60 NumeroMas61
## 1 23 130 16
## 2 25 124 14
## 3 13 129 28
## 4 16 125 44
## 5 16 101 30
## 6 11 138 12
Averiguamos la proporción que representa cada subcategoría de pesos, dentro de cada observación.
DatosPesos = as.table(as.matrix(DatosPatata[, 3:6])) # Seleccionamos los datos y los guardamos como tabla
class (DatosPesos) # lo comprobamos
## [1] "table"
prop.table (DatosPesos, 1) # Averiguamos la proporción por fila, es decir, por observación.
## Peso40 Peso41a45 Peso46a60 PesoMas61
## A 0.018962076 0.055888224 0.807385230 0.117764471
## B 0.093370682 0.069094304 0.728291317 0.109243697
## C 0.035405872 0.039723661 0.640759931 0.284110535
## D 0.004303211 0.037073817 0.568685866 0.389937107
## E 0.081057269 0.054625551 0.554185022 0.310132159
## F 0.029461279 0.037037037 0.804713805 0.128787879
## G 0.056847545 0.087855297 0.759689922 0.095607235
## H 0.102591793 0.195464363 0.668466523 0.033477322
## I 0.074626866 0.120551091 0.733639495 0.071182549
## J 0.038701623 0.101123596 0.807740325 0.052434457
## K 0.068426197 0.029325513 0.861192571 0.041055718
## L 0.165346535 0.172277228 0.628712871 0.033663366
## M 0.169459963 0.111731844 0.687771570 0.031036623
## N 0.064359862 0.134256055 0.766782007 0.034602076
## O 0.031219029 0.071357780 0.818136769 0.079286422
## P 0.056737589 0.173758865 0.744680851 0.024822695
## Q 0.112288136 0.142478814 0.733580508 0.011652542
## R 0.109890110 0.284023669 0.606086221 0.000000000
Si queremos agregar esta tabla DF DatosPatatas.
PropDatosPesos = as.data.frame.matrix(prop.table (DatosPesos, 1)) # Añadimos "matrix" para que conserve la estructura.
class (PropDatosPesos)
## [1] "data.frame"
head (PropDatosPesos)
## Peso40 Peso41a45 Peso46a60 PesoMas61
## A 0.018962076 0.05588822 0.8073852 0.1177645
## B 0.093370682 0.06909430 0.7282913 0.1092437
## C 0.035405872 0.03972366 0.6407599 0.2841105
## D 0.004303211 0.03707382 0.5686859 0.3899371
## E 0.081057269 0.05462555 0.5541850 0.3101322
## F 0.029461279 0.03703704 0.8047138 0.1287879
colnames (PropDatosPesos) = paste("Prop", colnames(PropDatosPesos), sep="") # Cambiamos el nombre para que no coincida con el de las columnas del DF Datos.
head (PropDatosPesos)
## PropPeso40 PropPeso41a45 PropPeso46a60 PropPesoMas61
## A 0.018962076 0.05588822 0.8073852 0.1177645
## B 0.093370682 0.06909430 0.7282913 0.1092437
## C 0.035405872 0.03972366 0.6407599 0.2841105
## D 0.004303211 0.03707382 0.5686859 0.3899371
## E 0.081057269 0.05462555 0.5541850 0.3101322
## F 0.029461279 0.03703704 0.8047138 0.1287879
DatosTotal = cbind(DatosPatata,PropDatosPesos)
head (DatosTotal)
## Tratamiento Variedad Peso40 Peso41a45 Peso46a60 PesoMas61 Numero40
## A Testigo Krone 380 1120 16180 2360 9
## B Testigo Krone 2000 1480 15600 2340 42
## C Testigo Krone 820 920 14840 6580 16
## D Testigo Krone 130 1120 17180 11780 3
## E Testigo Krone 1840 1240 12580 7040 22
## F Tratado Krone 700 880 19120 3060 13
## Numero41a45 Numero46a60 NumeroMas61 PropPeso40 PropPeso41a45
## A 23 130 16 0.018962076 0.05588822
## B 25 124 14 0.093370682 0.06909430
## C 13 129 28 0.035405872 0.03972366
## D 16 125 44 0.004303211 0.03707382
## E 16 101 30 0.081057269 0.05462555
## F 11 138 12 0.029461279 0.03703704
## PropPeso46a60 PropPesoMas61
## A 0.8073852 0.1177645
## B 0.7282913 0.1092437
## C 0.6407599 0.2841105
## D 0.5686859 0.3899371
## E 0.5541850 0.3101322
## F 0.8047138 0.1287879
Si queremos tener la información en tanto porciento.
DatosTotal = cbind(DatosPatata,PropDatosPesos*100)
head(DatosTotal)
## Tratamiento Variedad Peso40 Peso41a45 Peso46a60 PesoMas61 Numero40
## A Testigo Krone 380 1120 16180 2360 9
## B Testigo Krone 2000 1480 15600 2340 42
## C Testigo Krone 820 920 14840 6580 16
## D Testigo Krone 130 1120 17180 11780 3
## E Testigo Krone 1840 1240 12580 7040 22
## F Tratado Krone 700 880 19120 3060 13
## Numero41a45 Numero46a60 NumeroMas61 PropPeso40 PropPeso41a45
## A 23 130 16 1.8962076 5.588822
## B 25 124 14 9.3370682 6.909430
## C 13 129 28 3.5405872 3.972366
## D 16 125 44 0.4303211 3.707382
## E 16 101 30 8.1057269 5.462555
## F 11 138 12 2.9461279 3.703704
## PropPeso46a60 PropPesoMas61
## A 80.73852 11.77645
## B 72.82913 10.92437
## C 64.07599 28.41105
## D 56.86859 38.99371
## E 55.41850 31.01322
## F 80.47138 12.87879