r语言 - 优化矩阵/数据帧的创建



我正在尝试使用与旧数据框架中列的值匹配的值列表创建一个新的矩阵/数据框架。另外,对于新的矩阵/数据帧,我想保留用于匹配的值列表的顺序。下面是我想要实现的一个例子:

#A list of values used for matching
time.new <- c(2, 3, 4, 3, 4, 5, 4, 5, 6)
#The old data frame which I would match on the column of time.old
old <- data.frame(time.old=1:10, y=rnorm(10))

我通过使用mergeorder得到了一个解决方案(见下文),但我想避免mergeorder,因为它们确实减慢了速度,而且我有一个更大的数据集。矩阵结果是首选的,因为数据帧也可以是缓慢的(进一步的操作),所以任何想法都会受到赞赏!

time.new <- data.frame(id = 1:length(time.new), time=time.new)
new_dataframe <- merge(x = time.new, y = old, by.x = "time", by.y="time.old", all.x = TRUE)
new_dataframe <- new_dataframe[order(new_dataframe$id), ]
new_dataframe$id <- NULL

我们可以用match连接time.newtime.old得到对应的y价值。

set.seed(123)
time.new <- c(2, 3, 4, 3, 4, 5, 4, 5, 6)
old <- data.frame(time.old=1:10, y=rnorm(10))
cbind(time = time.new, y = old$y[match(time.new, old$time.old)])
#      time       y
# [1,]    2 -0.2302
# [2,]    3  1.5587
# [3,]    4  0.0705
# [4,]    3  1.5587
# [5,]    4  0.0705
# [6,]    5  0.1293
# [7,]    4  0.0705
# [8,]    5  0.1293
# [9,]    6  1.7151

最新更新