Я ищу код, подобный циклу for, который просматривает все строки определенных столбцов, чтобы создать новую переменную для строки [i].
У меня есть фрейм данных, который включает в основном три столбца,Начало интервала, конец интервала и дата измерения.Во всех трех столбцах значения имеют формат YearMonthDayHourMinute.Дата измерения непрерывна все 10 минут.Интервал - это просто короткие периоды, которые оставляют множество NA, где дата измерения не соблюдается.
Фрейм данных выглядит следующим образом:
interval_start interval_end measuring_date
1 NA NA 201805021210
2 201805021220 201805021250 201805021220
3 NA NA 201805021230
4 NA NA 201805021240
5 NA NA 201805021250
6 NA NA 201805021300
Теперь я хочу R ксоздайте новый столбец, который дает «Да», где период измерения находится в пределах интервала, и «Нет», где это не так.
Примерно так:
interval_start interval_end measuring_date within_interval
1 NA NA 201805021210 No
2 201805021220 201805021250 201805021220 Yes
3 NA NA 201805021230 Yes
4 NA NA 201805021240 Yes
5 NA NA 201805021250 Yes
6 NA NA 201805021300 No
Итак, я хочу, чтобы R взяла измерение_даты строки 1 и сравнило его с interval_start и interval_end строки 1,2,3,4,5 и 6То же самое для измерения_даты строки 2 и так далее.Проблема, с которой я столкнулся сейчас, заключается в том, что я пытался использовать циклы for с if else и вложенными циклами for (см. Ниже), но R, похоже, не в состоянии взять measure_date строки 1 и сравнить его со всеми строками в interval_start и interval_end,Сравнивается только в пределах одного ряда.Итак, все, что я могу получить, это:
interval_start interval_end measuring_date within_interval
1 NA NA 201805021210 No
2 201805021220 201805021250 201805021220 Yes
3 NA NA 201805021230 No
4 NA NA 201805021240 No
5 NA NA 201805021250 No
6 NA NA 201805021300 No
Кто-нибудь знает решение этой проблемы?Возможно, есть решения за пределами цикла, с которыми я не сталкивался.Я искал весь интернет, но не нашел никакого решения, которое оставило бы меня довольно расстроенным.Даже мой руководитель беспомощен. Надеюсь, мой вопрос достаточно ясен, извините, я впервые использую stackoverflow ..
for (i in 1:nrow(masterX)){
masterX$Within_Searching_Period[i] <- NA
for (j in 1:nrow(masterX)){
if (masterX$MESS_DATUM[i] >= masterX$time_date_start_min[j] &
masterX$MESS_DATUM[i] <= masterX$time_date_end_min[j]) {
masterX$Within_Searching_Period[i] <- "YES"
} else {masterX$Within_Searching_Period[i] <- "NO"
}
}
}