我有一个像下面这样的数据框架
<表类>
样本ID
参数值
单位
tbody><<tr>1 苹果 30 g 1梨 15 磅 1organge 20 公斤 2苹果 2 g 2梨 3 磅 2橙色 10 公斤 3 苹果 15 g3 梨 23 磅 3 橙色 12 公斤 表类>
我们可以将'Parameter'和'Unit'列连接为一个列,然后使用pivot_wider
重塑为'wide'格式
library(dplyr)
library(stringr)
library(tidyr)
df1 %>%
mutate(Parameter = sprintf('%s_value_unit(%s)', Parameter, Unit),
.keep = "unused") %>%
pivot_wider(names_from = Parameter, values_from = Value)
与产出
# A tibble: 3 × 4
SampleID `apple_value_unit(g)` `pear_value_unit(lb)` `orange_value_unit(kg)`
<int> <int> <int> <int>
1 1 30 15 20
2 2 2 3 10
3 3 15 23 12
数据df1 <- structure(list(SampleID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L
), Parameter = c("apple", "pear", "orange", "apple", "pear",
"orange", "apple", "pear", "orange"), Value = c(30L, 15L, 20L,
2L, 3L, 10L, 15L, 23L, 12L), Unit = c("g", "lb", "kg", "g", "lb",
"kg", "g", "lb", "kg")), class = "data.frame", row.names = c(NA,
-9L))