Я пытаюсь объединить вектор 'средства' в фрейм данных.
Мой фрейм данных выглядит следующим образом Данные = рост
Сначала я рассчитал все средства для разных групп (1 группа = население + температура + размер + репликация) с помощью этой команды:
means<-aggregate(TL ~ Population + Temperature + Replicat + Size + Measurement, data=growth, list=growth$Name, mean)
Затем я выбрал средства для измерения 1 следующим образом, поскольку меня интересуют только эти средства.
meansT0<-means[which(means$Measurement=="1"),]
Теперь я хотел бы объединить этот вектор средних значений с моим фреймом данных (= рост), чтобы правильное среднее значение каждой группы соответствовало правой части фрейма данных.
Цель состоит в том, чтобы затем подставить среднее значение каждой группы (в измерении 1) каждому элементу кадра данных на основе его принадлежащей группы (и для всех других измерений, кроме измерения 1). Может быть, нет необходимости добавлять столбец средств в фрейм данных? Вы знаете какую-нибудь команду, чтобы сделать это?
[27.06.18]
Я составил этот упрощенный фрейм данных, надеюсь, это поможет понять.
Итак, я хочу, чтобы для каждого отдельного человека в кадре данных и для каждого измерения (здесь только Измерение 1 и Измерение 2, обычно у меня было больше), было получено среднее значение его группы принадлежности в ИЗМЕРЕНИИ 1.
Итак, если я получу средства по группам ( 1 группа = Население + Температура + Измерение):
means<-aggregate(TL ~ Population + Temperature + Measurement, data=growth, list=growth$Name, mean)
means
Я получил следующие значения средств (в этом примере):
Population Temperature Measurement TL
JUB 15 **1** **12.00000**
JUB 20 **1** **15.66667**
JUB 15 2 17.66667
JUB 20 2 18.66667
JUB 15 3 23.66667
JUB 20 3 24.33333
Нас интересуют только средства в ИЗМЕРЕНИИ 1. Для каждого отдельного лица в кадре данных я хочу подставить среднее значение его принадлежащей группы в Измерении 1: в этом примере (см. Кадр данных с командой R):
- для группы JUB + 15 + Измерение 1 , среднее = 12
- для группы JUB + 20 + Измерение 1 , среднее = 15,66
growth<-data.frame(Population=c("JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB","JUB", "JUB", "JUB"), Measurement=c("1","1","1","1","1","1","2","2","2","2","2","2", "3", "3", "3", "3", "3", "3"),Temperature=c("15","15","15","20", "20", "20","15","15","15","20", "20", "20","15","15","15","20", "20", "20"),TL=c(11,12,13,15,18,14, 16,17,20,21,19,16, 25,22,24,26,24,23), New_TL=c("11-12", "12-12", "13-12", "15-15.66", "18-15.66", "14-15.66", "16-12", "17-12", "20-12", "21-15.66", "19-15.66", "16-15.66", "25-12", "22-12", "24-12", "26-15.66", "24-15.66", "23-15.66"))
print(growth)
Надеюсь, с этим вы сможете лучше понять, что я пытаюсь сделать. У меня много данных, и если мне придется делать это вручную, это займет у меня много времени и увеличит риск ошибок.