2015-05-26 2 views
0

У меня есть кадр данных:кадров Манипулирование данных в R по ID

ID  date  term estimate 
unit1 1/1/2015 intercept 1.01 
unit1 1/1/2015 x1  2.01 
unit1 1/1/2015 x2  3.01 
unit1 1/1/2015 x3  4.01 
unit1 1/1/2015 x4  5.01 
unit2 1/1/2015 intercept 1.01 
unit2 1/1/2015 x1  -1.01 
unit2 1/1/2015 x2  1.01 
unit2 1/1/2015 x3  2.01 
unit1 1/2/2015 intercept 1.01 
unit1 1/2/2015 x1  2.01 
unit1 1/2/2015 x2  3.01 
unit1 1/2/2015 x3  4.01 
unit1 1/2/2015 x4  5.01 

То, что я пытаюсь получить это каждый каждый термин в своей колонке, по идентификатору и дате, НСБУ для ID и дата которые не имеют определенного термина, связанного с ним. Таким образом, должно быть в общей сложности 7 столбцов - идентификатор, дата, перехват и x1-x4.

ответ

2

Это простое изменение формы с длиной широкой проблемы

library(reshape2) 
dcast(df, ID + date ~ term) 
#  ID  date intercept x1 x2 x3 x4 
# 1 unit1 1/1/2015  1.01 2.01 3.01 4.01 5.01 
# 2 unit1 1/2/2015  1.01 2.01 3.01 4.01 5.01 
# 3 unit2 1/1/2015  1.01 -1.01 1.01 2.01 NA 
+0

Это работало, однако у меня есть более чем один столбец, связанный с каждым членом (у меня есть столбцы для оценки, нижняя граница и верхняя граница). Любой способ получить два других столбца в улучшенный фрейм данных? – JMonroe

+0

Возможно, вам нужно добавить их в формулу. Я не могу точно сказать, не видя фактических данных. –

2

Или

library(tidyr) 
spread(df1, term, estimate) 
#  ID  date intercept x1 x2 x3 x4 
#1 unit1 1/1/2015  1.01 2.01 3.01 4.01 5.01 
#2 unit1 1/2/2015  1.01 2.01 3.01 4.01 5.01 
#3 unit2 1/1/2015  1.01 -1.01 1.01 2.01 NA 
Смежные вопросы