Как разрушение восходит frame с R

Привет хорошие я стараюсь разрушать дату frame q имею с R, идея состоит в том, что у меня есть 3 переменные: сайт, вид, биомасса. Для каждого сайта у меня есть список видов, где обычно повторяют несколько раз те же виды в сайтах с биомассами, и я хочу q у меня вышел в каждый сайт только однажды каждый вид, с суммой изобилия, если он вышел больше одного раза в этом сайте. Он использовал пакет dplyr, и старался делать это с summarise (group_by), но только с собой q я разрушился список всех видов, которые выходят в общем количестве во всех объединенных сайтах и Вашей полной биомассе всех объединенных сайтов, не отделенном каждым наблюдаемым сайтом. Но стоило бы делать это каким бы то ни было образом в R. Большое спасибо в течение Вашего времени.

1
задан 26.03.2016, 22:26
2 ответа

Привет, Включать пример данных ускоряет процесс. Смоги быть кодом, который производил бы данные, или если ты это копируешь пюпитра в виде дощечки с зажимом. Здесь одна спрашивает на английском на теме. Давайте предполагать такие данные как эти:

set.seed(3)
datos <- data.frame(sitio=paste0("sitio",sample(3,10,replace=TRUE)),
                    especie=paste0("e",sample(4,10,replace=10)),
                    biomasa=round(rnorm(10,20),0))

    sitio      especie   biomasa
    1  sitio3      e3      18
    2  sitio3      e1      21
    3  sitio2      e4      20
    4  sitio3      e4      21
    5  sitio2      e2      21
    6  sitio1      e4      19
    7  sitio1      e1      20
    8  sitio1      e1      18
    9  sitio3      e1      20
    10 sitio1      e4      20

Ответ Рубена превосходный:

 datos %>% group_by(sitio, especie) %>% summarise(biomasa = sum(biomasa))

   sitio especie biomasa
  (fctr)  (fctr)   (dbl)
1 sitio1      e1      38
2 sitio1      e4      39
3 sitio2      e2      21
4 sitio2      e4      20
5 sitio3      e1      41
6 sitio3      e3      18
7 sitio3      e4      21

Однако я предлагаю использование data.table как альтернативы, которая слегка быстрее и в она мне кажется более простой:

 library(data.table)
 datos <- as.data.table(datos)
 datos[,sum(biomasa), by=c("especie","sitio")]
    especie  sitio V1
 1:      e3 sitio3 18
 2:      e1 sitio3 41
 3:      e4 sitio2 20
 4:      e4 sitio3 21
 5:      e2 sitio2 21
 6:      e4 sitio1 39
 7:      e1 sitio1 38
2
ответ дан 24.11.2019, 14:41

Ты был бы должен давать больше деталей проблемы (p.e. включать что-то из кода).

Если ты используешь пакет dplyr, имей в виду, что ты можешь группировать из-за более чем одной переменной. Пример:

datos %>% group_by(sitio, especie) %>% summarise(biomasa = sum(biomasa))

Я надеюсь, что он подает тебя...

1
ответ дан 24.11.2019, 14:41