Я искал ответ, но я все еще не нашел решения, я все еще новичок в R. Мой фрейм данных отображает измерение одной экологической характеристики (относительного покрытия почвы) для ~ 70 видов растений в различных условиях: разные годы, разная химическая обработка и наличие / отсутствие теплицы.
Мне нужно обобщить эти данные в новом кадре данных, который отображает среднее значение и sd признака для каждого вида и для каждой комбинации факторов (условий) , Я знаю, что aggregate
или lapply
могли бы помочь, но я изо всех сил пытаюсь объединить группировку по 3 различным факторам и множественным видам, что подразумевает необходимость "автоматизированного" кода.
Извините, если я пропустил сообщение, отвечающее на мой вопрос
Спасибо за ваше терпение и помощь
Редактировать: вот воспроизводимый пример, надеюсь, я делаю это правильно :
mydata<-structure(list(Year = c(2010L, 2010L, 2010L, 2010L, 2010L, 2010L,
2010L, 2010L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L, 2011L,
2011L), Replicate = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L), Treatment = structure(c(1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("A",
"B"), class = "factor"), Greenhouse = structure(c(2L, 2L, 1L,
1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L), .Label = c("No",
"Yes"), class = "factor"), Sp_1 = c(4L, 0L, 2L, 5L, 4L, 0L, 2L,
5L, 0L, 0L, 4L, 6L, 4L, 0L, 2L, 5L), Sp_2 = c(7L, 0L, 1L, 1L,
7L, 0L, 1L, 1L, 7L, 0L, 1L, 1L, 6L, 0L, 1L, 1L), Sp_3 = c(8L,
2L, 2L, 1L, 8L, 2L, 2L, 1L, 10L, 2L, 1L, 1L, 4L, 2L, 2L, 1L)), class = "data.frame", row.names = c(NA,
-16L))
В этом примере я поместил только 3 вида, но, как я уже сказал, у меня более 70 видов, поэтому мне нужно что-то, что могло бы выделить все столбцы видов (mydata[,5:75]
? Что-то в этом роде) больше чем c("sp_1","sp_2",..., "sp_70")
.
Я бы хотел, чтобы вывод выглядел следующим образом:
Year Treatment Greenhouse Sp_1_mean Sp_1_sd Sp_2_mean Sp_2_sd
2010 A Yes x x x x
2010 A No x x x x
2010 B Yes x x x x
2010 B No x x x x
2011 A Yes x x x x
2011 A No x x x x
2011 B Yes x x x x
2011 B No x x x x
Вот dput()
, показывающий, как должен выглядеть требуемый вывод
desired_output<-structure(list(Year = c(2010L, 2010L, 2010L, 2010L, 2011L, 2011L,
2011L, 2011L), Treatment = structure(c(1L, 1L, 2L, 2L, 1L, 1L,
2L, 2L), .Label = c("A", "B"), class = "factor"), Greenhouse = structure(c(2L,
1L, 2L, 1L, 2L, 1L, 2L, 1L), .Label = c("No", "Yes"), class = "factor"),
Sp_1_mean = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "x", class = "factor"),
Sp_1_sd = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "x", class = "factor"),
Sp_2_mean = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "x", class = "factor"),
Sp_2_sd = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "x", class = "factor"),
Sp_3_mean = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "x", class = "factor"),
Sp_3_sd = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "x", class = "factor")), class = "data.frame", row.names = c(NA,
-8L))
I надеюсь, что это понятнее! Спасибо