Как мне сделать пользовательскую укладку в R? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть два столбца данных (как указано в приведенном ниже коде), и я не знаю, как складывать их в один столбец в произвольном порядке. Чтобы было ясно, я хочу один столбец (назовите его x) в качестве моего набора данных, с записями 1-5 столбца "attr" в качестве записей 1-5 столбца x, за которыми следуют записи 6-10 столбца "type" в качестве записей 6-10 в столбце x, после записей 6-10 столбца "attr" в качестве записей 11-15 в столбце x, а затем, наконец, записи 6-10 столбца "type" в качестве записей 16-20 в столбце x. Мой набор данных ниже:

analysis <- data.frame(attr = c('player_a', 'player_b', 'player_c', 'player_d', 'player_e',
                                'player_f', 'player_g', 'player_h', 'player_i', 'player_j'),
                       type = c('player_q', 'player_r', 'player_s', 'player_t', 'player_u',
                                'player_v', 'player_w', 'player_x', 'player_y', 'player_z'))

Я довольно новичок в R, поэтому прошу прощения, если я использовал неправильную терминологию. Любая помощь с благодарностью

Чтобы уточнить, мой желаемый заказ:

player_a
player_b
player_c
player_d
player_e
player_q
player_r
player_s
player_t
player_u
player_f
player_g
player_h
player_i
player_j
player_v
player_w
player_x
player_y
player_z

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вот мой ответ, который использует пакет dplyr, но я уверен, что вы можете использовать ту же логику с data.table или base

library(dplyr)
library(tidyr)
analysis <- data.frame(attr = c('player_a', 'player_b', 'player_c',
                                'player_d', 'player_e', 'player1', 'player2',
                                'player3', 'player4', 'player5'), 
                       type=c('player_v','player_w','player_x',
                              'player_y', 'player_z','player6', 'player7',
                              'player8', 'player9', 'player10'))
a2 <- mutate(analysis, order = c(rep(1,5),rep(2,5)))
a3 <- gather(a2, "variable", "value", -order) %>% arrange(order)
0 голосов
/ 27 июня 2018

Это то, что вы ищете (использует пакет data.table)?

library(data.table)

analysis <- data.table(attr = c('player_a', 'player_b', 'player_c', 'player_d', 'player_e'), type=c('player_v','player_w','player_x', 'player_y', 'player_z'))

melt(analysis,measure.vars = 1:2)

    variable    value
 1:     attr player_a
 2:     attr player_b
 3:     attr player_c
 4:     attr player_d
 5:     attr player_e
 6:     type player_v
 7:     type player_w
 8:     type player_x
 9:     type player_y
10:     type player_z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...