Попытка привести строки к столбцам в r - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь что-то очень простое в R, транспонировать набор данных, чтобы я мог создать первичный ключ для объединения с другими таблицами, которые имеют много значений.

Я пробовал dcast и aggregate, и убежищене заставил их работать.Вот как выглядит мой фрейм данных Текущий R-фрейм R

Вот как я бы хотел, чтобы он выглядел: Новый R-фрейм R

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

С помощью reshape вы можете делать somithing как:

 reshape(transform(df,time=ave(Amount,Make,FUN=seq_along)),dir = 'wide',idvar='Make')

      Make DateSold.1 Amount.1 DateSold.2 Amount.2 DateSold.3 Amount.3
1     Ford 2017-07-01    30000 2017-08-01    15000 2017-10-01    25000
4    Chevy 2017-01-01    23000       <NA>       NA       <NA>       NA
5 Chrysler 2017-03-01    22000 2017-04-01    21000       <NA>       NA
0 голосов
/ 08 февраля 2019

Вы можете вставить код в свой пост, поэтому вставьте код, который создает ваш data.frame, например:

df <- data.frame(
  Make     = c('Ford', 'Ford', 'Ford', 'Chevy', 'Chrysler', 'Chrysler'),
  DateSold = c('2017-07-01', '2017-08-01', '2017-10-01', '2017-01-01', '2017-03-01', '2017-04-01'),
  Amount   = c(30, 15, 25, 23, 22, 21) * 1e3
)

Теперь для вашего вопроса вы можете использовать библиотеку tidyverse которые имеют много полезных функций для манипулирования данными.Вы можете выполнить следующий код построчно, чтобы понять различные шаги для достижения решения.

library(tidyverse)

df %>%
  gather(-Make, key = Column, value = Value) %>%
  group_by(Make, Column) %>% 
  mutate(Count = 1:n()) %>% 
  unite(Column_count, Column, Count) %>%
  spread(Column_count, Value)

#   Make     Amount_1 Amount_2 Amount_3 DateSold_1 DateSold_2 DateSold_3
#   <fct>    <chr>    <chr>    <chr>    <chr>      <chr>      <chr>     
# 1 Chevy    23000    NA       NA       2017-01-01 NA         NA        
# 2 Chrysler 22000    21000    NA       2017-03-01 2017-04-01 NA        
# 3 Ford     30000    15000    25000    2017-07-01 2017-08-01 2017-10-01
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...