首页 > 解决方案 > 将 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

我已经尝试过tidyrreshape但我想我还是个菜鸟,非常感谢任何帮助或建议!

标签: rreshapetidyr

解决方案


希望我能正确获取您的输入数据。

假设输入文件看起来像(也许文本没有被引用,但为了简单起见我使用引号):

"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>

推荐阅读