将 4x3 数据帧转换为 1 行数据帧
Transforming a 4x3 dataframe into a 1 row dataframe
我在实验室工作,我正在尝试以一种奇怪的格式获取一台测量芳烃化合物的设备的输出,这种格式一点也不整洁,但我们的实验室管理系统软件需要它。我的初始数据框如下所示:
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>
我在实验室工作,我正在尝试以一种奇怪的格式获取一台测量芳烃化合物的设备的输出,这种格式一点也不整洁,但我们的实验室管理系统软件需要它。我的初始数据框如下所示:
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>