我整理数据表的时候,是这样做的。
A <- data.frame(
Season = rep(2023, 5),
crop = rep("Soybean", 5),
treatment = rep("Inside panel", 5),
plot = rep(6, 5),
row = 1:5,
rep1 = c(24.30, 30.30, 21.80, 22.90, 20.60),
rep2 = c(10.30, 0.00, 29.30, 0.00, 30.80),
rep3 = c(30.70, 28.40, 15.50, 22.30, 17.40),
SS1 = c("tr1", "tr1", "tr1", "tr3", "tr1"),
SS2 = c("tr3", "tr2", "tr2", "tr2", "tr3"),
SS3 = c("tr2", "tr3", "tr3", "tr1", "tr2")
)
Season crop treatment plot row rep1 rep2 rep3 SS1 SS2 SS3
1 2023 Soybean Inside panel 6 1 24.3 10.3 30.7 tr1 tr3 tr2
2 2023 Soybean Inside panel 6 2 30.3 0.0 28.4 tr1 tr2 tr3
3 2023 Soybean Inside panel 6 3 21.8 29.3 15.5 tr1 tr2 tr3
4 2023 Soybean Inside panel 6 4 22.9 0.0 22.3 tr3 tr2 tr1
5 2023 Soybean Inside panel 6 5 20.6 30.8 17.4 tr1 tr3 tr2
SS1 与rep1 对齐,SS2 与rep2 对齐,SS3 与rep3 对齐。例如,在第一行中,24.3 代表 tr1,10.3 代表 tr3,30.7 代表 tr2。
我想要的是将 SS 列转置为行。
B=data.frame(
Season = rep(2023, 15),
crop = rep("Soybean", 15),
treatment = rep("Inside panel", 15),
plot = rep(6, 15),
row = rep(1:5, each = 3),
rep = rep(1:3, times = 5),
SS = c("tr1", "tr3", "tr2", "tr1", "tr2", "tr3", "tr1", "tr2", "tr3", "tr3", "tr2", "tr1", "tr1", "tr3", "tr2"),
yield = c(24.30, 10.30, 30.70, 30.30, 0.00, 28.40, 21.80, 29.30, 15.50, 22.90, 0.00, 22.30, 20.60, 30.80, 17.40))
Season crop treatment plot row rep SS yield
1 2023 Soybean Inside panel 6 1 1 tr1 24.3
2 2023 Soybean Inside panel 6 1 2 tr3 10.3
3 2023 Soybean Inside panel 6 1 3 tr2 30.7
4 2023 Soybean Inside panel 6 2 1 tr1 30.3
5 2023 Soybean Inside panel 6 2 2 tr2 0.0
6 2023 Soybean Inside panel 6 2 3 tr3 28.4
7 2023 Soybean Inside panel 6 3 1 tr1 21.8
8 2023 Soybean Inside panel 6 3 2 tr2 29.3
9 2023 Soybean Inside panel 6 3 3 tr3 15.5
10 2023 Soybean Inside panel 6 4 1 tr3 22.9
11 2023 Soybean Inside panel 6 4 2 tr2 0.0
12 2023 Soybean Inside panel 6 4 3 tr1 22.3
13 2023 Soybean Inside panel 6 5 1 tr1 20.6
14 2023 Soybean Inside panel 6 5 2 tr3 30.8
15 2023 Soybean Inside panel 6 5 3 tr2 17.4
您能让我知道如何将转置列转换为行,并与原始值对齐吗?
library(dplyr)
library(tidyr)
A %>%
pivot_longer(
cols = c(starts_with("rep"), starts_with("SS")),
names_to = c(".value", "set"),
names_pattern = "(rep|SS)(\\d+)"
) %>%
select(-set)
Season crop treatment plot row rep SS
<dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
1 2023 Soybean Inside panel 6 1 24.3 tr1
2 2023 Soybean Inside panel 6 1 10.3 tr3
3 2023 Soybean Inside panel 6 1 30.7 tr2
4 2023 Soybean Inside panel 6 2 30.3 tr1
5 2023 Soybean Inside panel 6 2 0 tr2
6 2023 Soybean Inside panel 6 2 28.4 tr3
7 2023 Soybean Inside panel 6 3 21.8 tr1
8 2023 Soybean Inside panel 6 3 29.3 tr2
9 2023 Soybean Inside panel 6 3 15.5 tr3
10 2023 Soybean Inside panel 6 4 22.9 tr3
11 2023 Soybean Inside panel 6 4 0 tr2
12 2023 Soybean Inside panel 6 4 22.3 tr1
13 2023 Soybean Inside panel 6 5 20.6 tr1
14 2023 Soybean Inside panel 6 5 30.8 tr3
15 2023 Soybean Inside panel 6 5 17.4 tr2