我有一个data.frame的条目。我还有一个每周都有一个data.frame,它有相关的条目计数。没有这样的周计数data.frame包含其中的每个条目,因此原始列表是每个条目的超集。
我想要做的是组合这些以便我有一个data.frame,其中第一列是条目,接下来的N列是N周计数,如果条目没有该周的计数,那么它被认为是0。
我的第一次尝试看起来像这样:
append_week_counts_to_entries <- function(entries) {
entries$week1 <- apply(entries,1,helpfunc,row=row,week=count_week1)
entries$week2 <- apply(entries,1,helpfunc,row=row,week=count_week2)
# ... to all N weeks
return(entries)
}
helpfunc <- function(entries,row,week) {
if(as.character(row[1]) %in% week$id) {
return(week[which(as.character(week$id) == as.character(row[1])),2])
}
else {
return(0)
}
}
(这一直有效,直到我把它抽象为它现在的样子。我宁愿学习它是如何工作的,而不是保持我以前编写它的糟糕方式)
除了不按原样工作外,我还有一种感觉,这对于R来说非常低效。在这两方面的帮助将非常受欢迎。
编辑: 示例数据集将是:
entries: structure(list(`entries$id` = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10
)), .Names = "entries$id", row.names = c(NA, -10L), class = "data.frame")
count_week_i: structure(list(Var1 = structure(1:3, .Label = c("1", "2", "3"
), class = "factor"), Freq = c(1L, 2L, 4L)), .Names = c("Var1",
"Freq"), row.names = c(NA, -3L), class = "data.frame")
答案 0 :(得分:0)
事实上,lapply
和家庭的高级用法有点复杂。不得不一次或两次问类似的问题......
HTH: Using lapply with changing arguments
和
Running lagged regressions with lapply and two arguments
特别喜欢expand.grid