【发布时间】:2019-05-10 14:48:26
【问题描述】:
我正在尝试找到一种更快的方法来迭代折叠数据框中的选定组。我目前正在遍历收购、日期和变量。如果可能的话,我想把它矢量化。
给定一组 id [1,2],我想获取 id 2 的所有值,并将其添加到 id1。此外,我想在此之后从数据集中删除 id2。
生成要调整的数据
dates <- c("Q1", "Q2", "Q3", "Q4")
ids <- c(1,2,3,4)
x1 <- seq(from=1, by=1, length=16)
x2 <- seq(from=1, by=2, length=16)
dat <- expand.grid(dates=dates, ids=ids)
dat <- data.frame(dat, x1, x2)
生成要调整的数据
ref <- data.frame(acquirer=c(2,3), acquired=c(1,4))
用于迭代折叠的慢三倍
for(i in 1:nrow(ref)){
for(j in c("x1", "x2")){
for(z in c("Q1", "Q2", "Q3", "Q4")){
dat[dat$ids==ref$acquirer[i] & dat$dates==z, j] <-
dat[dat$ids==ref$acquirer[i] & dat$dates==z, j] +
dat[dat$ids==ref$acquired[i] & dat$dates==z, j]
dat[dat$ids==ref$acquired[i] & dat$dates==z, j] <- NA
}
}
}
【问题讨论】:
标签: r performance