Ich möchte meine Lösung in R. beschleunigenverschachtelte schneller für Schleife R
Ich habe bekam zwei Dataframes‘, sagen wir mal: 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
Und df_two:
A | B
1 | 3
6 | 2
5 | 3
Wenn beide Instanzen in Spalte A und B identisch sind (oder in einer Sequenz von .5), möchte ich eine 1, sonst eine 0 in einer zusätzlichen Spalte in df_one (df_one $ same).
Ich tat dies mit dem folgenden Code:
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}
}
}
mir jemand kann mit einer schnelleren Lösung helfen?
eine 'merge' tun, und dann die Spalten vergleichen, wird es viel schneller als Schleifen verwenden. – ytk
Ihr Code ist nicht reproduzierbar und Ihr gewünschtes Verhalten ist unklar. 'hour_df' ist nicht definiert, und es ist unklar, was Sie zu erreichen versuchen. Unter [hier] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) erfahren Sie mehr darüber, wie Sie eine gute R-Frage schreiben –