Tutorial sobre algunas formas de hacer operaciones por filas o columnas en un Data Frame en R.

Puedes seguir el tutorial por vídeo en https://youtu.be/H3NabquvLZM

Establezco el directorio de trabajo

setwd("~/Expression/Expression Encoder/Output/26 Operaciones por filas o columnas I")

Importo los datos

Datos = read.table("Potato.csv", header=T, sep="," , dec=".") 

Sumar datos por filas, rowSums.

Queremos averiguar el peso total de cada muestra del ensayo, ya que nos han dado los datos de los pesos de las patatas de la muestra, clasificados por categoría. Los datos de cada muestra están recogidos por filas en nuestro Data Frame. El comando rowSums suma todos los datos del Data Frame por filas, pero a nosotros nos interesa sumar solo los datos de las columnas relativas a los pesos, es decir, los de las columanas de la posición 3 a la 6. Además, el resultado lo guardaremos en una nueva variable a la que llamaremos PesoTotalMuestra.

Datos$PesoTotalMuestra = rowSums (Datos[ , 3:6])

De la misma manera, puedo averiguar el número de patatas total que tengo por muestra. Los datos relativos al número de patatas, son los de las columnas de la posición 9 a la 12.

Datos$NumPatatasTotal = rowSums (Datos[ , 7:10])
head (Datos)
##   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 PesoTotalMuestra NumPatatasTotal
## 1          23         130          16            20040             178
## 2          25         124          14            21420             205
## 3          13         129          28            23160             186
## 4          16         125          44            30210             188
## 5          16         101          30            22700             169
## 6          11         138          12            23760             174

Sumar datos por columnas, colSums.

TotPesosCat = colSums (Datos[ , 3:6])
TotPesosCat
##    Peso40 Peso41a45 Peso46a60 PesoMas61 
##     24300     36580    242550     41010
library (dplyr)
## 
## Attaching package: 'dplyr'
## 
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
TotPesosCat2 = colSums (select (Datos, contains ("Peso")))
TotPesosCat2
##           Peso40        Peso41a45        Peso46a60        PesoMas61 
##            24300            36580           242550            41010 
## PesoTotalMuestra 
##           344440

De igual manera funcionan los comandos rowMeans y colMeans

Datos$PesoMedioCatMuestra = rowMeans (Datos[ , 3:6])
head (Datos)
##   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 PesoTotalMuestra NumPatatasTotal
## 1          23         130          16            20040             178
## 2          25         124          14            21420             205
## 3          13         129          28            23160             186
## 4          16         125          44            30210             188
## 5          16         101          30            22700             169
## 6          11         138          12            23760             174
##   PesoMedioCatMuestra
## 1              5010.0
## 2              5355.0
## 3              5790.0
## 4              7552.5
## 5              5675.0
## 6              5940.0
MediaPesosCat = colMeans (Datos[ , 3:6])
MediaPesosCat
##    Peso40 Peso41a45 Peso46a60 PesoMas61 
##  1350.000  2032.222 13475.000  2278.333