我有一个如下所示的数据框:
variable Name Description value SMTS
GTEX-N7MS-0007-SM-2D7W1 ENSG00000223972.4 DDX11L1 0 Blood
GTEX-N7MS-0007-SM-2D7W1 ENSG00000227232.4 WASH7P 158 Blood
GTEX-N7MS-0008-SM-4E3JI ENSG00000223972.4 DDX11L1 0 Skin
GTEX-N7MS-0008-SM-4E3JI ENSG00000227232.4 WASH7P 166 Skin
GTEX-N7MS-0011-R10A-SM-2HMJK ENSG00000223972.4 DDX11L1 0 Brain
GTEX-N7MS-0011-R10A-SM-2HMJK ENSG00000227232.4 WASH7P 209 Brain
我想对其进行转换,以使Description
列中的值成为列名,value
列中的值成为列值:
variable DDX11L1 WASH7P SMTS
GTEX-N7MS-0007-SM-2D7W1 0 158 Blood
GTEX-N7MS-0008-SM-4E3JI 0 166 Skin
GTEX-N7MS-0011-R10A-SM-2HMJK 0 209 Brain
我尝试使用强制转换(例如dcast(final,value~Name)和其他组合)但是由于我不想要任何函数(如mean,sum等)来申请转换,它会返回我的长度的对象。我只想要这些值。任何建议将不胜感激。
答案 0 :(得分:2)
这似乎给出了您正在寻找的结果:
library(reshape2)
dcast(mydf, variable + SMTS ~ Description, value.var="value")
# variable SMTS DDX11L1 WASH7P
# 1 GTEX-N7MS-0007-SM-2D7W1 Blood 0 158
# 2 GTEX-N7MS-0008-SM-4E3JI Skin 0 166
# 3 GTEX-N7MS-0011-R10A-SM-2HMJK Brain 0 209
答案 1 :(得分:2)
尝试:
library(dplyr)
library(tidyr)
如果dat
是数据集
dat%>% select(-Name) %>% spread(Description, value)
# variable SMTS DDX11L1 WASH7P
# 1 GTEX-N7MS-0007-SM-2D7W1 Blood 0 158
# 2 GTEX-N7MS-0008-SM-4E3JI Skin 0 166
# 3 GTEX-N7MS-0011-R10A-SM-2HMJK Brain 0 209