Конвертировать широкий фрейм данных со счетчиками в длинный формат в R - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь преобразовать данные в длинный формат

В R у меня есть следующие данные:

alcolevel <- c(0,0.5,1.5,4.0,7.0)
present <- c(48,38,5,1,0)
absent <- c(17066,14464,788,126,37)
dataset1 <- data.frame(alcolevel,present,absent)


     alcolevel present absent 
1         0      48  17066 
2       0.5      38  14464 
3       1.5       5    788   
4       4.0       1    126  
5       7.0       0     37   

I wi sh для преобразования набора данных1 в это:

alcolevel  Y
0          present
0          present
0          absent
0          absent
0          absent
 .            .
 .            .
 .            .
0.5        absent
0.5        present
0.5        present
0.5        present
 .            .
 .            .
 .            .
1.5        present
 .            .
 .            .
 .            .
7.0        present
7.0        present

, поэтому я получаю 48 присутствующих и 17066 отсутствующих для alcolevel 0. То же самое для других категорий alcolevel. После преобразования новый длинный набор данных станет длинным. Я ценю любую помощь с этой проблемой. Спасибо

1 Ответ

1 голос
/ 12 февраля 2020

Если нам нужно выполнить репликацию, uncount в столбце «значение» после поворота в «длинный» формат

library(dplyr)
library(tidyr)
dataset1 %>% 
    pivot_longer(cols = -alcolevel, names_to = 'Y' ) %>%
    uncount(value)  %>%
    as_tibble
# A tibble: 32,573 x 2
#   alcolevel    Y  
#       <dbl> <chr>  
# 1         0 present
# 2         0 present
# 3         0 present
# 4         0 present
# 5         0 present
# 6         0 present
# 7         0 present
# 8         0 present
# 9         0 present
#10         0 present
# … with 32,563 more rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...