Я ретранслирую множество факторов, используя data.table в R. Это часто связано с большим количеством копирования и вставки. Мне интересно, могу ли я использовать раскрывающийся список типов в R, чтобы ускорить это. Так, например, когда вы вводите df$
, он дает ниспадающий список, из которого можно выбрать. Вот пример:Быстрая перекодировка факторов в таблице данных
# Create example df
Batch <- rep(LETTERS[seq(from=1, to =10)], each=1)
Date <- rep(seq(as.Date("2001-01-01"), length.out = 5, by="1 day"), each=2)
df <- data.table(Batch, Date)
# Show factor combinations
with(df, table(Date, Batch))
# Add new column based on factor labels.
df[Date=="2001-01-01", NewBatch:="hello"]
df[Date=="2001-01-02", NewBatch:="world"]
#etc
Как вы можете видеть, это может быть довольно продолжительным, если у меня есть десять факторов. Я думал, что-то вроде:
df$Date <- factor(df$Date)
labs <- data.frame(unique(df$Date))
ndf <- matrix(, nrow=1, ncol=length(labs$unique.df.Date.))
ndf <- data.frame(ndf)
colnames(ndf) <- c(labs[1],labs[2],labs[3],labs[4],labs[5])
Тогда я типа ndf$
и я выпадающий всех факторов. Однако это довольно грязно. Любые идеи, чтобы сделать его опрятным?
Благодарности
Update пытается предложения:
lookup <- data.table(Date = as.Date(unique(df[["Date"]])) , Newbatch = c("h","e","l","l","o"))
df[lookup, Newbatch:=i.Newbatch, on="Date"]
Вышеприведенные работает прекрасно.
Создание просмотровых data.table и сделать объединение вместо вашего метода. – Roland
Привет, Роланд. Разве это не связано с тем же копированием и вставкой, или я неловкий? Я отредактирую свой вопрос так, как вы думаете, пожалуйста, исправьте, если нет. – Pete900