根据行关系值在 R 中拆分数据 数据

问题描述

我的数据框具有以下结构:

起始值 中间值 最终价值 关系
A B C 降低,降低
A D,E C 降低,提高,提高

我正在尝试格式化数据,以便我最终得到:

起始值 关系 最终价值
A 降低 B
B 降低 C
A 降低 D
D 加注 E
E 加注 C

我一直在努力像这样格式化我的数据。起初我尝试了 tidyr separator_rows() 和某种形式的 reshape2 和 data.table 融合数据,但无济于事。有什么建议吗?

解决方法

我们可以unite列然后用separate_rows分割列

library(dplyr)
library(tidyr)
df1 %>% 
  unite(StartValue,StartValue,MiddleValue,sep=",",remove = FALSE) %>%
  unite(FinalValue,FinalValue,") %>% 
  separate_rows(c(StartValue,Relationship))

-输出

# A tibble: 5 x 3
#  StartValue FinalValue Relationship
#  <chr>      <chr>      <chr>       
#1 A          B          lowers      
#2 B          C          lowers      
#3 A          D          lowers      
#4 D          E          raises      
#5 E          C          raises        

数据

df1 <- structure(list(StartValue = c("A","A"),MiddleValue = c("B","D,E"),FinalValue = c("C","C"),Relationship = c("lowers,lowers","lowers,raises,raises")),class = "data.frame",row.names = c(NA,-2L))