#r #dataframe #apply
#r #фрейм данных #применить
Вопрос:
Ниже приведены первые 5 строк моих данных: фрейм данных называется инвертируемым
Location Transect Species Count
McAbee M1 Bat Star 35
McAbee M1 Turban Snail 2
McAbee M1 Sun Star 1
McAbee M1 Chiton 1
..........
Я пытаюсь объединить мои виды и посчитать данные вместе, чтобы я мог выполнить ANOVA, чтобы увидеть различия между местоположением и разрезом. У меня есть два местоположения и всего четыре разреза.
Я считаю, что tapply()
функция является правильной для объединения Species
и Count
вместе, но я не могу разобраться в коде.
Я считаю, что код должен быть:
inverts$speciescount = tapply(inverts$Species, inverts$Count, ....)
Итак, я получил несколько хороших отзывов о том, как объединить два столбца, однако я все еще не могу сравнить данные между разрезами и местоположением. Я не уверен, как поступить. Что я хочу сделать, так это создать код, в котором это:
Count ~ Transect
# or
Count ~ Location
Проблема с простым выполнением этого заключается в том, что данные подсчета — это просто набор чисел, и они ссылаются на вид. У кого-нибудь есть какие-либо предложения?
Спасибо за помощь
Комментарии:
1. Не могли бы вы немного пояснить, что вы подразумеваете под «объединением»?
2. Мне нужны они в одном столбце для запуска ANOVA. Мне нужно, чтобы вид и количество были вместе, потому что запуск ANOVA с простым подсчетом местоположения не дает мне правильных результатов.
Ответ №1:
Вы можете сделать это любым символьным способом:
within(inverts, speciesCount <- paste(Species, Count, sep=":")
или факторный способ:
within(inverts, speciesCount <- Species:factor(Count))
Поскольку это в контексте линейного моделирования, факторный способ кажется более подходящим.
Ответ №2:
Если я правильно понимаю ваш вопрос, для d — это ваш data.frame:
newd <- data.frame(d[,c("Location","Transect")],SpeciesCount=paste(d$Species,d$Count))
Комментарии:
1. Спасибо, что сработало для размещения всего в одном столбце.
Ответ №3:
Я думаю, вы запутались в том, какими должны быть ваши входные данные для функции моделирования. Если вы моделируете подсчеты, то потребуется что-то вроде этого:
cfit <- glm(counts ~ transect location species, data=inverts, family="poisson")
anova(cfit)
Если вы хотите посмотреть на взаимодействие видов с местоположением, то вы могли бы изучить эту модель:
cfit2 <- glm(counts ~ transect location species, data=inverts, family="poisson")
anova(cfit2)
Можно было бы выполнить линейную регрессию, но тогда вы можете получить бессмысленные прогнозы, такие как отрицательные значения.