У меня многослойного фрейм данныхпоместить значение кадра данных в R
a <- c(1,1,1,1,2,2,3,3,3,3,3,4,4,4,4)
b <- c(200,201,201,200,220,220,200,220,203,204,204,203,220,200,200)
d <- c(500,500,500,500,500,501,501,501,501,501,502,502,502,502,502)
f <- c("G","G","M","M", "G","G","M","M","M","G","M","G","M","G","G")
df <- data.frame(a,d,b,f)
я использую dcast
от reshape2
, чтобы поместить значение данных следующего
dcast(df,a+d+b ~ f)
a d b G M
1 1 500 200 1 1
2 1 500 201 1 1
3 2 500 220 1 0
4 2 501 220 1 0
5 3 501 200 0 1
6 3 501 203 0 1
7 3 501 204 1 0
8 3 501 220 0 1
9 3 502 204 0 1
10 4 502 200 2 0
11 4 502 203 1 0
12 4 502 220 0 1
он по умолчанию длине, так как я не кладям агрегирующая функция. То, что я хотел бы, однако, чтобы получить
a d b col_1 col_2
1 500 200 G M
1 500 201 G M
2 500 220 G NA
...and so on
я хочу «расширить» или поместить значение кадра данных перестановки столбца f
для конкретной комбинации a+d+b
и добавляет его к раме. Есть ли элегантный способ без необходимости перебирать комбинации?
EDIT: Не обязательно только 2 уровня G
& M
в col f
. Я просто хочу поставить col_1
col_2
col_3
, который перенесет столбец f
на уникальную комбинацию a+d+b
. Я сделал это с циклом for; но с большим набором данных он громоздкий. Я искал код быстрее!
Пожалуйста, простите мой хромой вопрос, но когда вы говорите, «У меня есть многослойную кадр данных», что вы имеете в виду под «сложены»? Для меня это выглядит как обычный фрейм. Какая разница? –