0
Я хотел бы ускорить мое решение в R.быстрее вложенным для контура R
Я получил два Dataframes, скажем: df_one:
A | B | C | D | same
1 | 3 | 2 | 4 | NA
6 | 5 | 1 | 3 | NA
5 | 3 | 7 | 3 | NA
3 | 4 | 8 | 3 | NA
И df_two:
A | B
1 | 3
6 | 2
5 | 3
Если оба экземпляра в столбцах A и B одинаковы (или в последовательности .5), я хочу 1, иначе 0 в дополнительном столбце в df_one (df_one $ same).
Я сделал это с помощью следующего кода:
df_one$same <- NA
for (i in 1:nrow(df_one)) {
for (j in 1:nrow(df_two)) {
distance <- seq(df_two[j, 2]-.5, df_two[j, 2]+.5, by = .1)
print(i)
if ((df_one[i, 1] == df_two[j, 1]) & (df_one[i, 2] %in% df_two[i, 2])){
df_one[i, 5] <- 1
break}
else{df_one[i, 5] <- 0}
}
}
Может кто-нибудь помочь мне с более быстрым решением?
Делают 'merge', а затем сравнить столбцы, то это будет намного быстрее, чем при использовании петли. – ytk
Ваш код не воспроизводится, и ваше желаемое поведение неясно. 'hour_df' не определен, и неясно, что именно вы пытаетесь выполнить. См. [Здесь] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) для получения дополнительной информации о том, как написать хороший вопрос R –