Я новичок в 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$Site) и на местоположение сайта (df. сайт$сайт 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")
df.site
выглядит очень плохо, поскольку столбцы не имеют согласованного типа (например, столбецtotal
содержит такие слова, какTotal
, и числа, подобные9
, столбецt04
содержит такие слова, как"T"
(если только это не логическое значение TRUE?), строки типа"na"
, в котором, вероятно, должны отсутствовать значенияNA
, числа, такие как4
, и обычные строки, такие как"CA"
. Первым шагом определенно должно быть приведение этих данных в форму. Не могли бы вы поделиться подмножеством этого фрейма данных сdput
, чтобы его можно было копировать/вставлять и мы можем видеть все типы столбцов? (Также было бы неплохо поделиться остальными сdput()
...) - person Gregor Thomas   schedule 12.02.2019dput(droplevels(df.site[1:10, ]))
наверное хорошо. - person Gregor Thomas   schedule 12.02.2019df.site
, и исправление процесса импорта вместо того, чтобы пытаться исправить испорченные данные, которые возникли в результате... не видя образца источника, трудно понять, будет ли это быть меньше работы или нет. - person Gregor Thomas   schedule 12.02.2019Species
более подходящим названиемgenus
? :) - person DanTan   schedule 12.02.2019