Как создать фрейм данных из нескольких векторов с именами векторов в качестве уровней? - PullRequest
1 голос
/ 04 мая 2019

У меня есть три вектора:

low = c(1,2,3)
med = c(3,5)
high = c(9)

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

value group
1     low
2     low
3     low
3     med
5     med
9     high

Я попытался создать фрейм данных (или фактор), например x=data.frame(low = low, med=med, high=high)но это дает три столбца.

Ответы [ 2 ]

3 голосов
/ 04 мая 2019

Один из вариантов - преобразовать их в именованное list, а затем stack

stack(list(low = low, med = med, high = high))

#  values  ind
#1      1  low
#2      2  low
#3      3  low
#4      3  med
#5      5  med
#6      9 high
2 голосов
/ 04 мая 2019

Вот один вариант с tidyverse

library(tidyverse)
lst(low, med, high) %>%
    enframe %>% 
    unnest
# A tibble: 6 x 2
#  name  value
#  <chr> <dbl>
#1 low       1
#2 low       2
#3 low       3
#4 med       3
#5 med       5
#6 high      9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...