Подтвердить что ты не робот

Вычислить средство строк по подмножеству столбцов

Учитывая примерный кадр данных:

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

Каков наилучший способ создать второй кадр данных, который будет содержать столбец ID и среднее значение для каждой строки? Что-то вроде этого:

ID  Mean
A    3.66
B    4.33
C    3.33
D    4.66
E    4.33

Нечто похожее на:

RM<-rowMeans(DF[,2:4])

Я хочу, чтобы средства были выровнены с их ID.

4b9b3361

Ответ 1

Вычислить средство строк в подмножестве столбцов:

Создайте новый data.frame, который определяет первый столбец из DF как столбец с именем ID и вычисляет среднее значение для всех остальных полей этой строки и помещает его в столбец под названием "Средства":

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

Ответ 2

Начиная с фрейма данных DF, вы можете использовать пакет 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

Ответ 3

Вы можете создать новую строку с $ в вашем кадре данных, соответствующем значению

DF$Mean <- rowMeans(DF[,2:4])