Как объединить векторы в кадр данных, используя индексный вектор в R? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть датафрейм df ответов на опрос (IPAQ) с 27 вопросами. Это первые 8 столбцов:

df
       ID   `1`   `2`   `3`   `4`   `5`   `6`   `7`
    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1    28     0     0     0     0     0     0     0
 2    52     0     0     0     0     0     0     0
 3    97     1     0     0     1    60     0     0
 4   100     0     0     0     0     0     0     0
 5   112     0     0     0     0     0     0     0
 6   157     0     0     0     0     0     0     0
 7   252     0     0     0     0     0     0     0
 8   254     1     0     0     4   120     7   180
 9   309     1     0     0     2    30     0     0
10   332     0     0     0     0     0     0     0

Я создал переменные, которые преобразуют эти ответы в значимые итоги, например:

###Housework and gardening###
gard.vig = (5.5 * df$`14` * df$`15`)
gard.mod = (4.0 * df$`16` * df$`17`)
house.mod = (3.0 * df$`18` * df$`19`)
total.hg = (gard.mod + gard.vig + house.mod)

###Leisure###
lei.walk = (3.3 * df$`20` * df$`21`)
lei.mod = (4.0 * df$`24` * df$`25`)
lei.vig = (8.0 * df$`22` * df$`23`)
tot.lei = (lei.walk + lei.mod + lei.vig)

Я хочу объединить / связать эти переменные вместе в кадре данных / tibble, используя переменную ID из исходного df, чтобы создать что-то вроде этого:

ID lei.walk lei.mod lei.vig total.lei gard.mod gard.vig etc.
28 600      55      89      etc.
52 etc. 
etc.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Мы можем использовать tibble

library(tibble)
tibble(df[1],  gard.vig, gard.mod, house.mod, total.hg, lei.walk, 
         lei.mod, lei.vig, tot.lei)
0 голосов
/ 17 апреля 2020

Поскольку вектор уже рассчитан, мы можем напрямую cbind их

cbind(df[1], gard.vig, gard.mod, house.mod, total.hg, lei.walk, 
             lei.mod, lei.vig, tot.lei)

Или используя data.frame

data.frame(ID = df$ID, gard.vig, gard.mod, house.mod, total.hg,
                lei.walk,lei.mod, lei.vig, tot.lei)
...