2016-12-02 7 views
-1

У меня есть кадр данных:Создание кадра данных с помощью последовательных групп строк

something<-data.frame(Drug=rep(c(1,2), each=6), Plant=c(rep("A",2),rep("B",2),rep("C",2)), dmso=c(0.407,0.374,0.452,0.429,0.439,0.436,0.441,0.453,0.439,0.436,0.452,0.429), One=c(0.241,0.237,0.455,0.436,0.453,0.433,0.47,0.461,0.453,0.433,0.455,0.436), Two=c(0.065,0.07,0.513,0.542,0.064,0.074,0.5,0.494,0.064,0.074,0.513,0.542), Three=c(0.063,0.068,0.678,0.631,0.068,0.073,0.449,0.521,0.068,0.073,0.678,0.631)) 

Я хочу, чтобы создать новый фрейм данных, где строки будут представлять средства растений для медикаментозного лечения. Ex: enter image description here

Прошу прощения, если это дубликат сообщения, но я не смог найти решение в другом месте. Спасибо :)

ответ

1

Это может быть сделано с aggregate():

aggregate(.~Drug+Plant,something,mean); 
## Drug Plant dmso One Two Three 
## 1 1  A 0.3905 0.2390 0.0675 0.0655 
## 2 2  A 0.4470 0.4655 0.4970 0.4850 
## 3 1  B 0.4405 0.4455 0.5275 0.6545 
## 4 2  B 0.4375 0.4430 0.0690 0.0705 
## 5 1  C 0.4375 0.4430 0.0690 0.0705 
## 6 2  C 0.4405 0.4455 0.5275 0.6545 

## S3 метод класса 'формулы'
агрегат (формула, данные, FUN, ..., Подмножество, na.actio п = na.omit)

...

формула

        formula, такие, как у ~ х или cbind (y1, y2) ~ x1 + x2, где переменные y представляют собой числовые данные, которые должны быть разделены на группы в соответствии с группировкой x переменных (обычно это факторы).

документации для специального использования . символа в формуле можно найти на странице дока для formula:

Есть две специальные интерпретаций. в формуле. Обычный - в контексте аргумента данных функций подгонки модели и означает «все столбцы, не имеющие отношения к формуле»: см. terms.formula. Только в контексте update.formula это означает «что было ранее в этой части формулы».


data.table решение:

library(data.table); 
dt <- as.data.table(something); 
dt[,lapply(.SD,mean),.(Drug,Plant)]; 
## Drug Plant dmso One Two Three 
## 1: 1  A 0.3905 0.2390 0.0675 0.0655 
## 2: 1  B 0.4405 0.4455 0.5275 0.6545 
## 3: 1  C 0.4375 0.4430 0.0690 0.0705 
## 4: 2  A 0.4470 0.4655 0.4970 0.4850 
## 5: 2  B 0.4375 0.4430 0.0690 0.0705 
## 6: 2  C 0.4405 0.4455 0.5275 0.6545