Как поместить несколько переменных внутри столбца как фактор в r - PullRequest
0 голосов
/ 16 октября 2018

У меня проблема при построении структуры данных.

enter image description here

lv1<-c(5,2,8)
lv2<-c(9,3,6)
lv3<-c(5,0,2)
df<-data.frame(lv1,lv2,lv3)

Результатом в данных является количество людей в lv1, lv2 и lv3.но я хочу исследовать связь между количеством людей и разными уровнями lv, поэтому я хотел бы преобразовать это в следующий вид:

enter image description here

lv<- c('lv1','lv1','lv1','lv2','lv2','lv2','lv3','lv3','lv3')
number.of.people<-(c(5,2,8,9,3,6,5,0,2))
new.df<-data.frame(lv,number.of.people)

Есть ли код, который яможет это сделать?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

При этом не используются пакеты.

long <- stack(df)

, что дает:

> long
  values ind
1      5 lv1
2      2 lv1
3      8 lv1
4      9 lv2
5      3 lv2
6      6 lv2
7      5 lv3
8      0 lv3
9      2 lv3

Если вы хотите изменить имена и изменить порядок столбцов, то:

long <- stack(df)[2:1]
names(long) <- c("lv", "no.of.people")
0 голосов
/ 16 октября 2018

Вам нужно tidyverse:

library(tidyverse)
    new.df%>%
     gather(lv,number.of.people)
   lv number.of.people
1 lv1                5
2 lv1                2
3 lv1                8
4 lv2                9
5 lv2                3
6 lv2                6
7 lv3                5
8 lv3                0
9 lv3                2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...