Я новичок в r и у меня сложный набор данных, поэтому надеюсь, что мои объяснения верны.У меня есть несколько фреймов данных, которые мне нужно использовать для выполнения ряда вещей.Вот один пример.У меня есть три кадра данных.Один из них представляет собой список названий видов и соответствующих кодов:
>df.sp
Species Code
Picea PI
Pinus CA
Другой представляет собой список сайтов с данными о численности видов для различных мест (dir).К сожалению, порядок видов различен.
>df.site
Site dir total t01 t02 t03 t04
2 Total PI CA AB T
2 N 9 1 5 na na
2 AB ZI PI CA
2 S 5 2 2 1 4
3 DD EE AB YT
3 N 6 1 1 5 3
3 AB YT EE DD
3 S 5 4 3 1 1
Тогда у меня также есть фрейм данных черт, соответствующих виду:
>df.trait
Species leaft rootl
Picea 0.01 1.2
Pinus 0.02 3.5
Пример одной вещи, которую я хочу сделать, - получить среднее значение для каждой черты (df.trait $ leaft и df.trait $ rootl) для всех видов на сайте (сайт df.site $) и на сайте (df.site $ сайт N, S).Таким образом, результат будет для первого ряда:
Site dir leaft rootl
2 N 0.015 2.35
Надеюсь, это имеет смысл.Мне очень сложно продумать, как это сделать.Я пытался работать с этого поста и с этого (и многих других), но заблудился.Спасибо за помощь.Очень признателен.
ОБНОВЛЕНИЕ: Вот пример фактического df.site (уменьшенный) с использованием dput:
> dput(head(df.site))
structure(list(Site = c(2L, 2L, 2L, 2L, 2L, 2L), dir = c("rep17316",
"N", "", "S", "", "SE"), total = c("Total", "9", "",
"10", "", "9"), t01 = c("PI", "4", "CA", "1", "SILLAC",
"3"), t02 = c("CXBLAN", "3", "ZIZAUR", "4", "OENPIL", "2"),
t03 = c("ZIZAPT", "1", "ECHPUR", "2", "ASCSYR", "2")), .Names = c("site", "dir", "total", "t01", "t02", "t03"), row.names = 2:7, class = "data.frame")