Есть ли способ создавать и вставлять новые строки в одном столбце на основе другого столбца - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть некоторые данные о событиях, которые я хочу собрать в одном столбце. На данный момент данные включают в себя столбцы для событий и другие столбцы, которые содержат результаты определенных событий. Я хочу включить результаты как события в данные, а также сохранить порядок. В приведенном ниже примере данные выглядят как df, и я хочу преобразовать их так, чтобы они выглядели как desired df.

a <- c("event1","event2","event3","event4")
b <- c("outcome1",'','','')
c <- c('','',"outcome3",'')

df <- data.frame(a,b,c)

d <- c("event1","outcome1","event2","event3","outcome3","event4")
desired <- data.frame(d)

1 Ответ

1 голос
/ 06 ноября 2019

Мы можем преобразовать данные в матрицу транспонированием, свернуть их в один вектор и удалить пустые значения

vals <- c(t(df))
data.frame(d = vals[vals!= ""])

#         d
#1   event1
#2 outcome1
#3   event2
#4   event3
#5 outcome3
#6   event4

Используя tidyverse

library(dplyr)
tidyr::pivot_longer(df, cols = names(df)) %>%
   filter(value != "") %>%
   select(value)
...