r - 将 4x3 数据帧转换为 1 行数据帧
问题描述
我在实验室工作,我正在尝试以一种奇怪的格式获得测量芳烃化合物的设备的输出,这种格式根本不整洁,但我们的实验室管理系统软件需要。我的初始数据框如下所示:
Aromatic_type Concentration Concentration2
1 Monoaromáticos 6.52 83.65
2 Diaromáticos 6.39 49.89
3 Triaromáticos 22.36 125.62
4 Aromáticos Totales 36.82 311.48
我需要将其转换为 1 行数据框,如下所示:
Monoaromáticos Concentration Monoaromáticos Concentration2 Diaromáticos Concentration etc...
6.52 83.65 6.39
我已经尝试过tidyr
,reshape
但我想我还是个菜鸟,非常感谢任何帮助或建议!
解决方案
希望我能正确获取您的输入数据。
假设输入文件看起来像(也许文本没有被引用,但为了简单起见我使用引号):
"Aromatic_type" "Concentration" "Concentration2"
"Monoaromáticos" 6.52 83.65
"Diaromáticos" 6.39 49.89
"Triaromáticos" 22.36 125.62
"Aromáticos Totales" 36.82 311.48
然后以下代码将以您想要的宽格式生成数据:
library(tidyverse)
datos <- '"Aromatic_type" "Concentration" "Concentration2"
"Monoaromáticos" 6.52 83.65
"Diaromáticos" 6.39 49.89
"Triaromáticos" 22.36 125.62
"Aromáticos Totales" 36.82 311.48'
df <- read_delim(datos, delim = " ", quote = '"')[, 1:3]
df2 <- df %>%
pivot_longer(
cols = c(2:3),
names_to = "concentracion",
values_to = "valores"
) %>%
unite(
col = "medida",
1:2,
sep = " "
) %>%
pivot_wider(
names_from = medida,
values_from = valores
)
df2
输出:
# A tibble: 1 x 8
`Monoaromáticos… `Monoaromáticos… `Diaromáticos C… `Diaromáticos C…
<dbl> <dbl> <dbl> <dbl>
1 6.52 83.6 6.39 49.9
# … with 4 more variables: `Triaromáticos Concentration` <dbl>,
# `Triaromáticos Concentration2` <dbl>, `Aromáticos Totales
# Concentration` <dbl>, `Aromáticos Totales Concentration2` <dbl>
推荐阅读
- r - 根据因素访问 data.frame 的值
- redis - Redis集群总线端口连接上没有keepalive
- typescript - Typescript:具有所有基本属性并允许任何扩展的类型
- c# - 如果我向 C# .NET 添加类,为什么会收到 HTTP 错误 403.14?
- python - 检查模型是否具有特定属性,如果找到则检查它是否具有值
- jquery - 在 nuxt.js 中使用 jquery.easing 时“$.extend 不是函数”
- angular - 排除某些路由的 routerLinkActive 样式类
- flutter - 如何创建可缩放的页面,例如带有颤动的地图
- html - ABCpdf - 如何使用 AddHtml 实现 CSS?
- python - 如何使用自定义 udf 实现来舍入列