Изменить форму и объединить стол - PullRequest
1 голос
/ 03 мая 2019

У меня есть один кадр данных DATA_SET, который состоит из трех столбцов c(TEST1, TEST2, TEST3), и второй кадр данных DATA_SET1, который состоит из двух столбцов c(key, value).

DATA_SET<-data.frame(
                     TEST1=c(200,220,200,260,300,290,320,320,360,400),
                     TEST2=c(200,220,200,260,400,290,220,370,260,200),
                     TEST3=c(200,220,200,260,500,290,120,240,160,400)
                     )            

DATA_SET1<-data.frame(         
                      key=c(rep("TEST1",10),rep("TEST2",10),rep("TEST3",10)),
                      value=c(700,700,700,700,700,700,700,700,700,700)
                      )

Таким образом, я намерен изменить DATA_SET1 с помощью функции melt() или чего-то подобного, а затем объединить ее с первой таблицей (т.е. DATA_SET), чтобы получить таблицу, подобную приведенной ниже.

enter image description here

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вы можете сделать следующее в base r.

unstack заботится о "изменении DATA_SET1 с функцией melt() или s̲o̲m̲e̲t̲h̲i̲n̲g̲ ̲si̲m̲i̲l̲a̲r̲" и rbind для "объединяются с первой таблицей (DATA_SET)" * * 1014

rbind(DATA_SET, unstack(DATA_SET1, form = value ~ key))

#>    TEST1 TEST2 TEST3
#> 1    200   200   200
#> 2    220   220   220
#> 3    200   200   200
#> 4    260   260   260
#> 5    300   400   500
#> 6    290   290   290
#> 7    320   220   120
#> 8    320   370   240
#> 9    360   260   160
#> 10   400   200   400
#> 11   700   700   700
#> 12   700   700   700
#> 13   700   700   700
#> 14   700   700   700
#> 15   700   700   700
#> 16   700   700   700
#> 17   700   700   700
#> 18   700   700   700
#> 19   700   700   700
#> 20   700   700   700

Создано в 2019-05-15 с помощью пакета Представление (v0.2.1)

0 голосов
/ 03 мая 2019

Использование тидиверса, tidyr и dplyr:

library(tidyr)
library(dplyr)

DATA_SET1 %>%
mutate(id = rep(1:10, 3)) %>%
spread(key, value) %>%
select(-id) %>%
bind_rows(DATA_SET)
...