Как вызывать функции на подмножествах случайных выборок данных - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь выполнить t.test для определенного подмножества данных.Допустим, у меня есть набор данных из 116 птиц, и я хочу найти случайную выборку из 35 (не уникальных) птиц из категории «Виды».Затем я хочу найти среднее значение «Body.Mass» этих случайных видов.Затем я хочу вызвать t.test для этого образца в качестве представителя всех данных.

Сначала я сохранил данные в объекте "птица".Я попытался взять случайную выборку, используя образец (bird $ Species, 35), который дал 35 случайных видов птиц.Теперь я, кажется, не могу далее подгруппировать эту случайную выборку, чтобы найти средства Body.Mass для каждого вида случайной выборки.Я попытался создать подмножество, используя tidyverse, но это единственный способ, с помощью которого я знаю, решить такую ​​проблему, как эта.

library(dplyr)
bird = read.csv("NZBIRDS.csv")
dput(head(bird))
set.seed(20)
sambird = sample(bird$Species,35)
sambird

bmbird <- sambird %>% summarize(avg = mean(Body.Mass))
bmbird
structure(list(Species = c("Grebes", "Grebes", "Petrels", "Petrels", 
"Petrels", "Petrels"), Name = c("P. cristatus", "P. rufopectus", 
"P. gavia", "P. assimilis", "P. urinatrix", "P. georgicus"), 
Extinct = c("No", "No", "Yes", "Yes", "Yes", "No"), Habitat = c("A", 
"A", "A", "A", "A", "A"), Nest.Site = c("G", "G", "GC", "GC", 
"GC", "GC"), Nest.Density = c("L", "L", "H", "H", "H", "H"
), Diet = c("F", "F", "F", "F", "F", "F"), Flight = c("Yes", 
"Yes", "Yes", "Yes", "Yes", "Yes"), Body.Mass = c(1100L, 
250L, 300L, 200L, 130L, 120L), Egg.Length = c(57, 43, 57, 
54, 38, 39)), .Names = c("Species", "Name", "Extinct", "Habitat", 
"Nest.Site", "Nest.Density", "Diet", "Flight", "Body.Mass", "Egg.Length"
), row.names = c(NA, 6L), class = "data.frame")

Ошибка в UseMethod ("summarise_"): нет применимого метода для "summarise_", примененного к объекту класса "factor"

1 Ответ

0 голосов
/ 03 июля 2019

Немного неясно, хотите ли вы произвести выборку из списка уникальных видов в данных или строк выборки, чтобы каждый тип "Вид" мог появляться в данных несколько раз.Если вы хотите попробовать уникальные виды, вы можете сделать:

# Only sampling one species since the example data
#   contains only two, should work fine
#   for more random species
random_species = sample(unique(bird$Species), 1, replace = FALSE)

bird %>%
    filter(Species %in% random_species) %>%
    group_by(Species) %>%
    summarize(avg = mean(Body.Mass))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...