重塑数据,因为在几个键上

reshape a data because on several keys

我有这样的数据

df<- structure(list(rn = structure(1:8, .Label = c("A", "B", "C", 
"D", "E", "F", "G", "H"), class = "factor"), WS1.Median = c(0.000621, 
0.000381, 0.00247, 5.94e-05, 0.000202, 0.00177, 0.000281, 0.00121
), WS1.SD = c(0.000127453, 9.23e-05, 0.000125033, 5.91e-06, 6.07e-05, 
0.000531633, 2.62e-05, 0.000277849), Wmp1.Median = c(0.000777, 
0.00177, 0.00199, 4.12e-05, 0.000167, 0.00255, 3e-04, 0.0019), 
    Wmp1.SD = c(0.000107802, 0.000120554, 0.000410528, 8.98e-06, 
    8.11e-05, 0.001238924, 2.27e-05, 0.000903124), WTb1.Median = c(0.000574, 
    0.002, 0.00287, 4.44e-05, 0.000238, 0.000253, 0.000304, 0.00374
    ), WTb1.SD = c(0.001048659, 0.000914697, 0.000450444, 1.11e-05, 
    2.91e-05, 0.000401285, 8.41e-05, 0.002588796), Wf1.Median = c(0.000537, 
    0.000457, 0.00224, 5.68e-05, 0.000242, 0.000934, 0.000284, 
    0.00153), Wf1.SD = c(9.32e-05, 0.000167046, 0.000310483, 
    1.16e-05, 4.07e-05, 9.12e-05, 5.28e-05, 8.89e-05)), class = "data.frame", row.names = c(NA, 
-8L))

我正在尝试重塑它并获得具体信息,然后我执行以下操作

df %>% gather(Var, Value, -rn) %>%
  arrange(rn) %>% group_by(rn) %>% mutate(n=row_number()) 

我希望输出至少包含如下信息

rn  key         x     y      place    sd   
A   WS1.Median  1  0.000621 WS1.SD  0.000127453
A   Wmp1.Median 1  0.000777 Wmp1.SD 0.000107802
A   WTb1.Median 1  0.000574 WTb1.SD 0.001048659
A   Wf1.Median  1  0.000537 Wf1.SD  9.32E-05

我们可以使用pivot_longer

library(dplyr)
library(tidyr)

df %>%      
  pivot_longer(cols = -rn, names_to = c( "key", ".value"), names_sep="[.]") %>%
  group_by(rn) %>%
  mutate(x = row_number())