Поворот данных в R с изменением формы - PullRequest
0 голосов
/ 12 декабря 2018

Я уверен, что это дубликат, но я чувствую, что я близок к решению здесь.У меня есть фрейм данных с именем Data, который имеет имена столбцов и структуру данных, например, так:

Col1, Col2, Col3, Val1, Val2, Val3, Val4
U,U,A,2,3,9,4

Я хочу перевести это в такую ​​форму:

Types, Col1, Col2, Col3, Nums
Val1, U, U, A, 2
Val2, U, U, A, 3
Val3, U, U, A, 9
Val4, U, U, A, 4

Но я могуне получается заставить пакет reshape2 работать.Я пробовал:

library(reshape2)
melt <- melt(data)
d_melt <- dcast(melt, Col1+Col2+Col3 ~ Val1+Val2+Val3)

Но это не дает нужную форму данных, которые я хочу.Аналогично, если я переверну операнды:

d_melt <- dcast(melt, Val1+Val2+Val3 ~ Col1+Col2+Col3)

Это также, похоже, не работает.

Я близко?Я не очень хорош в поворотах в R, но я чувствую, что мне не хватает какого-то параметра (может быть, другого инструмента?), Чтобы получить новое имя поля для отображения.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я бы использовал tidyr::gather вместо.

library(dplyr)
library(tidyr)

read.table(text = "Col1, Col2, Col3, Val1, Val2, Val3, Val4
                   U,U,A,2,3,9,4", 
                   header = TRUE, 
                   stringsAsFactors = FALSE, 
                   sep = ",") %>% 
gather(Types, Nums, starts_with("Val"))

Результат:

  Col1 Col2 Col3 Types Nums
1    U    U    A  Val1    2
2    U    U    A  Val2    3
3    U    U    A  Val3    9
4    U    U    A  Val4    4
0 голосов
/ 12 декабря 2018

melt только достигает результата:

melt(df)
# Using Col1, Col2, Col3 as id variables
#   Col1 Col2 Col3 variable value
# 1    U    U    A     Val1     2
# 2    U    U    A     Val2     3
# 3    U    U    A     Val3     9
# 4    U    U    A     Val4     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...