una - Calcular medios de fila en un subconjunto de columnas
tablas en r (4)
Comenzando con su marco de datos DF
, podría usar el paquete data.table
:
library(data.table)
## EDIT: As suggested by @MichaelChirico, setDT converts a
## data.frame to a data.table by reference and is preferred
## if you don''t mind losing the data.frame
setDT(DF)
# EDIT: To get the column name ''Mean'':
DF[, .(Mean = rowMeans(.SD)), by = ID]
# ID Mean
# [1,] A 3.666667
# [2,] B 4.333333
# [3,] C 3.333333
# [4,] D 4.666667
# [5,] E 4.333333
Dado un marco de datos de muestra:
C1<-c(3,2,4,4,5)
C2<-c(3,7,3,4,5)
C3<-c(5,4,3,6,3)
DF<-data.frame(ID=c("A","B","C","D","E"),C1=C1,C2=C2,C3=C3)
DF
ID C1 C2 C3
1 A 3 3 5
2 B 2 7 4
3 C 4 3 3
4 D 4 4 6
5 E 5 5 3
¿Cuál es la mejor manera de crear un segundo marco de datos que contendría la columna ID
y la media de cada fila? Algo como esto:
ID Mean
A 3.66
B 4.33
C 3.33
D 4.66
E 4.33
Algo similar a:
RM<-rowMeans(DF[,2:4])
Me gustaría mantener los medios alineados con sus ID
.
Puede crear una nueva fila con $
en su marco de datos correspondiente a los Medios
DF$Mean <- rowMeans(DF[,2:4])
Usando dplyr :
library(dplyr)
# exclude ID column then get mean
DF %>%
transmute(ID,
Mean = rowMeans(select(., -ID)))
O
# select the columns to include in mean
DF %>%
transmute(ID,
Mean = rowMeans(select(., C1:C3)))
# ID Mean
# 1 A 3.666667
# 2 B 4.333333
# 3 C 3.333333
# 4 D 4.666667
# 5 E 4.333333
Calcular medios de fila en un subconjunto de columnas:
Cree un nuevo data.frame que especifique la primera columna de DF como una columna llamada ID y calcule la media de todos los otros campos en esa fila, y la ponga en la columna titulada ''Means'':
data.frame(ID=DF[,1], Means=rowMeans(DF[,-1]))
ID Means
1 A 3.666667
2 B 4.333333
3 C 3.333333
4 D 4.666667
5 E 4.333333