#r #data.table
#r #данные.таблица
Вопрос:
У меня есть фрейм данных, который представляет собой список списков — список штормов, каждая точка шторма представляет собой строку. В одном столбце указано, находится ли каждая точка шторма над сушей. Я могу определить, какие штормы обрушились на берег, однако я не знаю, как выбрать только эти штормы, т. Е. Создать новый фрейм данных только из тех штормов, которые обрушились на берег.
Этот код позволяет мне узнать, обрушился ли шторм на берег (группируя по идентификатору, он суммирует столбец в регионе (1 или 0), и если больше 1, это говорит о том, что шторм обрушился на берег):
land_tracks <- all_tracks[, sum(inregion) > 0, by = ID]
Дает мне:
ID V1
1: 1987051906_15933 TRUE
2: 1987060118_16870 TRUE
3: 1987061306_18015 TRUE
4: 1987062100_18878 TRUE
5: 1987062918_19507 FALSE
6: 1987070512_20168 TRUE
7: 1987070812_20341 TRUE
8: 1987071218_20635 TRUE
9: 1987071412_20762 TRUE
10: 1987071606_20881 TRUE
Как мне использовать это, чтобы просмотреть all_tracks, чтобы найти все строки, которые соответствуют идентификатору, где V1 == TRUE
?
У меня регулярно возникает проблема, которая land_tracks
имеет 41 строку, all_tracks
имеет 1879 строк, и R поднимает проблему с утилизацией.
Комментарии:
1. Вы можете подмножество по
V1
, а затем сделать что-то вродеall_tracks$ID %in% land_tracks$ID
. Я добавил тегdata.table
, поскольку соответствующие наборы данных создаются и обрабатываются функциями этого пакета.2. Спасибо, однако, используя: land_sel <- land_tracks[который (land_tracks $ V1 == TRUE),] sel_tracks <- all_tracks$ID%в% land_sel$ID sel_tracks имеет ту же длину, что и all_tracks, но имеет один столбец TRUE / FALSE, я явно пропускаю шаг!
Ответ №1:
Может быть, вы можете сделать что-то вроде ВНУТРЕННЕГО соединения между этими двумя таблицами:
merge(all_tracks,land_tracks[which(land_tracks$V1== TRUE)], by = 'ID')
Комментарии:
1. Спасибо, это сработало именно так, как нужно (нужно будет проверить данные, но на данный момент выглядит правильно).