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