Я пытаюсь преобразовать фрейм данных с вертикальным форматом в горизонтальный формат. Я знаком с функцией dcast
. Тем не менее, я хотел бы обновить левую часть уравнения dcast
условным полем, которое станет строкой. Вот конкретный пример c:
df = data.frame(ID=c(3,3,3,3,3,3,3,3,4,4,4,4),
Field=rep(c("Color","Height","Weight","Condition"),3),
Values=c("blue",72,140,"ON","blue",72,180,"OFF","green",80,162,"OFF"))
Вы заметите, что если мы агрегируем только на основе ID
, быть множественными совпадениями, потому что существует несколько значений, когда поле равно "Condition
" (то есть ID
3
имеет как ON
, так и OFF
условие для Condition
). Таким образом, я хотел бы сначала начать с извлечения этого столбца, а затем применить dcast
, чтобы получить такой кадр данных:
desiredDF = data.frame(ID=c(3,3,4),
Condition=c("ON","OFF","OFF"),
Color=c("blue","blue","green"),
Height=c(72,72,80),
Weight=c(140,180,162))
Есть идеи?