有没有一种方法可以在另一列的基础上创建和插入新行

时间:2019-11-06 12:49:35

标签: r dplyr tidyverse data-manipulation

我想将一些事件数据收集到一栏中。目前,数据包括事件列和包含某些事件结果的其他列。我想将结果作为事件包括在数据中,并保留顺序。在下面的示例中,数据看起来像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 个答案:

答案 0 :(得分:1)

我们可以通过转置将数据转换为矩阵,将其折叠为一个矢量并删除空值

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)