Я ищу решение, чтобы ускорить мой код. Я работаю с набором данных ок. 100 000 строк и в настоящее время я использую двойной цикл for. Я полагаю, это замедляет мой код.
Example data:
dt<-structure(list(name = c("Marcus", "Tina", "Jack", "George"),
address = c("Oxford Str.", "Oxford Str.", "Waterloo Sq.",
"London Str."), number = c(1, 1, 20, 15), suffix = c("a",
"a", NA, "b"), child = c("Tina", NA, "George", NA)), .Names = c("name",
"address", "number", "suffix", "child"), row.names = c(NA, -4L
), class = "data.frame")
Example DataFrame:
name address number suffix child
1 Marcus Oxford Str. 1 a Tina
2 Tina Oxford Str. 1 a
3 Jack Waterloo Sq. 20 George
4 George London Str. 15 b
Я выполняю итерацию для каждой строки, чтобы проверить, живет ли ребенок по тому же адресу, и поставил «1» в новом столбце «Вывод». По умолчанию это "0". Результат должен быть:
Example result:
name address number suffix child output
1 Marcus Oxford Str. 1 a Tina 1
2 Tina Oxford Str. 1 a
3 Jack Waterloo Sq. 20 George 0
4 George London Str. 15 b
Мой текущий код:
df$output = 0
n = NROW(df)
for(i in 1:n) {
childID = df[i,5]
address = df[i,2]
number = df[i,3]
suffix = df[i,4]
for(j in 1:n) {
if((childID %in% df[j,1])&(address %in% df[j,2])&(number %in% df[j,3])
&(suffix %in% df[j,4]))
(df[i,6] = 1)
}
}
Я пытался использовать Rcpp с кодом C ++. Это работает тоже, но все еще довольно медленно. Любые идеи, чтобы ускорить это, или я должен просто принять это, займет некоторое время, чтобы запустить это?