Вы можете получить подмножество ваших данных с помощью индексации или с помощью subset
:
ex0331 <- data.frame( iron=rnorm(36), supplement=c("Fe3","Fe4"))
subset(ex0331, supplement=="Fe3")
subset(ex0331, supplement=="Fe4")
ex0331[ex0331$supplement=="Fe3",]
или сразу с split
, в результате появится список:
split(ex0331,ex0331$supplement)
Другая вещь, которую вы можете сделать, это использовать tapply
, чтобы разделить на множители и затем выполнить функцию:
tapply(ex0331$iron,ex0331$supplement,mean)
Fe3 Fe4
-0.15443861 -0.01308835
Также можно использовать пакет plyr
, который имеет множество полезных функций.Например:
library(plyr)
daply(ex0331,.(supplement),function(x)mean(x[1]))
Fe3 Fe4
-0.15443861 -0.01308835
Редактировать
В ответ на отредактированный вопрос вы можете получить журнал железа для каждого дополнения с помощью:
ex0331 <- data.frame( iron=abs(rnorm(36)), supplement=c("Fe3","Fe4"))
tapply(ex0331$iron,ex0331$supplement,log)
или с помощью plyr
:
library(plyr)
dlply(ex0331,.(supplement),function(x)log(x$iron))
Оба возвращаются в списке.Я уверен, что есть более простой способ, чем функция-обертка в примере с plyr.