#r #casting #dataframe #reshape #melt
#r #Кастинг #фрейм данных #изменить форму #расплавить
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
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) и другие комбинации), но поскольку я не хочу, чтобы какая-либо функция (например, среднее значение, сумма и т. Д.) Применялась для преобразования, Она возвращает мне длину объектов. Я просто хочу, чтобы значения были как есть. Любые предложения будут оценены.
Комментарии:
1. Проверьте
reshape2
пакет и прочитайте это: преобразование данных между широкими и длинными2. Я этого не понимаю. Каждый раз, когда я задаю вопрос, почему кто-то голосует за него? Я проверил пакет reshape2, а также попробовал cast amp; dcast, используя довольно много комбинаций, но у меня это не работает. Я упоминал, что пытался использовать dcast.
Ответ №1:
Похоже, это дает результаты, которые вы ищете:
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
Ответ №2:
Попробуйте:
library(dplyr)
library(tidyr)
if 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