У меня есть набор данных, как это (df1
)Как более эффективно преобразовать мою фреймворк в новую форму (R)?
ID 2 4 6 8 10 12 14 16 18 20 22 24 Day
1 0 0 0 0 2 0 0 0 1 0 1 0 Sunday
1 0 0 0 0 0 4 0 0 0 0 0 0 Monday
1 0 0 0 0 0 0 0 0 2 0 0 0 Tuesday
1 0 0 0 0 0 0 2 0 0 0 0 0 Wednesday
1 0 0 0 0 0 0 0 2 0 0 0 0 Thursday
1 0 0 0 0 0 0 0 0 2 0 0 0 Friday
1 0 0 0 0 0 0 0 0 0 2 0 0 Saturday
2 0 0 0 0 0 0 0 0 0 0 0 0 Sunday
2 0 0 0 0 0 1 0 0 0 0 0 0 Monday
2 0 0 0 0 0 0 1 0 0 0 1 0 Tuesday
2 0 0 0 0 0 0 0 1 0 0 0 0 Wednesday
2 0 0 0 0 0 0 0 0 1 0 0 0 Thursday
2 0 0 0 0 0 2 0 0 0 1 0 0 Friday
2 0 0 0 0 0 0 0 0 0 0 0 0 Saturday
3 0 0 0 0 0 0 0 0 0 0 0 0 Sunday
3 0 0 0 0 0 0 2 0 0 0 0 0 Monday
3 0 0 0 0 0 1 0 0 2 0 0 0 Tuesday
3 0 0 0 0 0 0 0 0 0 0 0 0 Wednesday
3 0 0 0 0 0 0 0 2 0 0 0 0 Thursday
3 0 0 0 0 0 0 0 0 0 0 0 0 Friday
3 0 0 0 0 0 0 2 0 0 0 0 0 Saturday
3 0 0 0 0 0 0 0 2 0 0 0 0 Sunday
и у меня есть ID
контрольный список, как это:
ID
1
2
3
Я хочу, чтобы преобразовать df1
в этот вид продукции:
ID Var1 Var2 Var3 Var4 Var5 ...... Var82 Var83 Var84
1 0 0 0 0 2 2 0 0
2
3
, где Var1
представляет «воскресенье 2» (в первом кадре данных), а var84 представляет «суббота24». Я хочу экспортировать мой результат как файл .csv
.
Я делаю это, используя цикл for (показано ниже), потому что слишком много идентификаторов. Однако проблема в том, что эти коды работают очень медленно. Есть ли более быстрый способ получить тот же результат?
library(dplyr)
library(reshape2)
for (i in ID_checklist$ID) {
x= filter(df1$ID %in% i)
x$Day = NULL
df.melted = melt(t(x[,-1]), id.vars = NULL)
myNewDF = data.frame(i, t(df.melted[,3]))
write.table(myNewDF,file="my12x7.csv", append=TRUE,sep=",",col.names=FALSE,row.names=FALSE)
}