У меня есть два кадра данных (DF1 и df2), что я пытаюсь сравнить значения вR Программирование - Сравнение стоимостной формы каждой строки в data.frame с каждой строкой другого data.frame
Для каждого. строка в DF1, я хочу сравнить столбец 1 со столбцом 1 для каждой строки в DF2. Для каждого соответствия (для каждого значения из DF1 может быть много), я хочу заполнить другой фрейм данных (DF3) значениями из строки, где находится сравнимое значение, и значениями из соответствующих строк в DF2.
Ниже приведен код, над которым я работаю. Я знаю, что мне следует избегать циклов, не говоря уже о вложенных циклах, но я не могу найти другого пути или найти какие-либо примеры.
DF3 <- data.frame("id","DF1Timestamp","DF2Timestamp")
head(df1)
id timestamp
1 CA8058409291009 2015-07-10 15:25:31
2 CA8058402571009 2015-07-10 15:50:20
3 CA8323300811005 2015-07-10 16:18:52
4 CA8058402571009 2015-07-10 16:51:54
5 CA8323300811005 2015-07-10 16:54:03
head(df2)
id timestamp
1 CA8058402571009 2015-07-10 15:49:23
2 CA8323300811005 2015-07-10 16:18:37
3 CA8058402571009 2015-07-10 16:31:42
4 CA8058409291009 2015-07-10 16:34:34
5 CA8058402571009 2015-07-10 16:51:29
#sets the index used to identify row numbers in the DF3 table
index <- 1
for (i in 1:nrow(DF1)){
for (j in 1:nrow(DF2)){
if ((DF1[i,3]) == (DF2[j,3])) {
DF3 [[i,1]] <- (DF1[i,3])
DF3 [[i,2]] <- (DF1[i,2])
DF3 [[i,3]] <- (DF2[j,3])
index <- index +1
}
else{
#do nothing
}
}
}
Все, что я получу за результаты
head(DF3)
ID. DF1timestamp DF2timestamp
1 <NA> <NA> <NA>
2 <NA> <NA> <NA>
3 <NA> <NA> <NA>
4 <NA> <NA> <NA>
5 <NA> <NA> <NA>
6 <NA> <NA> <NA>
То, что я хотел, чтобы получить это.
head(DF3)
id DF1Timestamp DF2Timestamp
1 CA8058409291009 2015-07-10 15:25:31 2015-07-10 16:34:34
2 CA8058402571009 2015-07-10 15:50:20 2015-07-10 16:31:42
3 CA8058402571009 2015-07-10 15:50:20 2015-07-10 16:51:54
4 CA8323300811005 2015-07-10 16:18:52 2015-07-10 16:18:37
5 CA8058402571009 2015-07-10 16:51:54 2015-07-10 15:49:23
6 CA8058402571009 2015-07-10 16:51:54 2015-07-10 16:31:42
7 CA8323300811005 2015-07-10 16:54:03 2015-07-10 16:18:37
То, что это таблица, показывающая первый раз, когда произошло событие, и при заданном ID и ряд для всех возможных времен окончания события.
Любая помощь приветствуется.
Пожалуйста, включите желаемый результат? –
Похоже, что 'DF1' имеет шесть строк, так как ваш результат заканчивается тем, что многие. Было бы намного яснее с воспроизводимым примером: http://stackoverflow.com/a/28481250/1191259 – Frank
Похоже, вы зацикливаетесь на то, что «merge (df1, df2)» делает –