Tutorial sobre tablas de frecuencia, a partir de variables cuantitativas, en R.

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