【发布时间】:2017-03-25 16:24:20
【问题描述】:
我对 R 相当陌生,想知道这里是否有人对我的问题有更好的解决方案,因为我的问题太耗时了。我知道 R 不是很“for-loop-friendly”,所以我确信有更好的方法来解决这个问题。
我有一个数据框,其中 x 是文本字符串,y 是数字 id:
x = c("a", "b", "c", "b", "a")
y = c(1,2,3,4,5)
df <- data.frame(x, y)
我希望 a 找到 x 列中的所有匹配项,并为它们分配与 y 中的第一个相同的数值。我用以下方法解决了这个问题:
library(foreach)
library(iterators)
for(i in 1:NROW(df)) {
for(j in i:NROW(df)) {
if(df$x[j] == df$x[i]){
df$y[j] <- df$y[i]
}
j = j + 1
}
i = i + 1
}
问题是,我有一个相当大的数据集,这使得这个过程需要很多时间!希望这里的任何人都知道一个更省时的选择!
【问题讨论】:
标签: r performance time dataframe match