Как сопоставить (сопоставить) столбцы и строки во фрейме данных? - PullRequest
0 голосов
/ 26 мая 2020

Я перевел данные в столбцы с веб-сайта Coursera. У меня 6 столбцов, все они разной длины, но мне нужно правильно сопоставить их, чтобы сформировать фрейм данных. Я не могу этого сделать с cbind.fill() из пакета rowr. Я не могу этого сделать ни с простым cbind.data.frame(), ни с data.table() (из пакета data.table).

Вот пример кода.

   c1 <- c("one", "two", "three", "four")
   c2 <- c("55k", "98m", 340k")
   c3 <- c("Toronto University", "NYU", "Yale", "Harvard")
   c4 <- c("Beginner", "Intermediate")

   data <- rowr::cbind.fill(c1, c2, c3, c4, fill = NA) # does not match the vars
   data <- cbind.data.frame(c1, c2, c3, c4) # does not match the vars, either
   data <- data.table(c1, c2, c3, c4) # the same situation

Мне нужно получить df вот так:

   c1    c2    c3                   c4 
  one    55k   Toronto University   Beginner
  two    98m   NYU                  Intermediate
  three  349k  Yale                 NA
  four   NA    Harvard              NA

1 Ответ

3 голосов
/ 26 мая 2020

Поместите векторы в список. Получите максимальную длину списка и подмножества.

list_vec <- list(c1, c2, c3, c4)
as.data.frame(sapply(list_vec, `[`, seq_len(max(lengths(list_vec)))))

#     V1   V2                 V3           V4
#1   one  55k Toronto University     Beginner
#2   two  98m                NYU Intermediate
#3 three 340k               Yale         <NA>
#4  four <NA>            Harvard         <NA>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...