基于名称列转置数据框

Transpose data frame based on a name column

我想使用名称列转置数据框以创建新的列名称。这是我的输入:

Name        X   Y   Z
sample1_A   1   2   3
sample1_B   3   2   1
sample2_A   1   2   3
sample2_B   3   2   1

预期输出:

Name    XA  XB  YA  YB  ZA  ZB
sample1 1   3   2   2   3   1   
sample2 1   3   2   2   3   1

虽然我可以转置函数,但我不确定如何处理列名和行名。

提前致谢!

我们可以使用 data.table 中的 dcast,它可以包含多个 value.var

library(data.table)
dcast(setDT(df1)[, c("Name", "grp") := tstrsplit(Name, "_")], 
               Name ~grp, value.var = c("X", "Y", "Z"), sep = "") 
#      Name XA XB YA YB ZA ZB
#1: sample1  1  3  2  2  3  1
#2: sample2  1  3  2  2  3  1