r - R中基于行关系值的数据拆分
问题描述
我的数据框具有以下结构:
起始值 | 中间值 | 终值 | 关系 |
---|---|---|---|
一个 | 乙 | C | 降低,降低 |
一个 | D、E | C | 降低,提高,提高 |
我正在尝试格式化数据,以便最终得到:
起始值 | 关系 | 终值 |
---|---|---|
一个 | 降低 | 乙 |
乙 | 降低 | C |
一个 | 降低 | D |
D | 提高 | 乙 |
乙 | 提高 | C |
我一直在努力像这样格式化我的数据。起初我尝试了 tidyr separate_rows() 和某种形式的 reshape2 和 data.table 融合数据,但无济于事。有什么建议么?
解决方案
我们可以unite
列然后拆分列separate_rows
library(dplyr)
library(tidyr)
df1 %>%
unite(StartValue, StartValue, MiddleValue, sep=", ", remove = FALSE) %>%
unite(FinalValue, MiddleValue, FinalValue, sep=", ") %>%
separate_rows(c(StartValue, FinalValue, 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))
推荐阅读
- swift - 如何在没有扫描功能的情况下保留 Rx 中的状态
- python - 如何将字符串(带换行符)转换为 HTML?
- android - 没有backstack的共享元素返回动画
- java - 返回里面试试
- python - 如何从 Python 向同一个长时间运行的 AWS Lambda 函数发出多个 HTTP RequestResponse 请求?
- node.js - sails.js 如何让 _csrf 在 vuejs 中使用
- html - 继承背景颜色的子元素
- cocoa-touch - CocoaLumberjack - 超过最大文件大小时文件滚动不起作用
- python-requests - Python 请求:如何向服务器授予 cookie 同意?
- arduino - esp8266 http 客户端示例