2017-02-15 10 views
0

Я аналитик ГИС и использую R для проекта. Я немного ржавый с кодом R. У меня есть данные в формате csv от радиолюбителей с датами и местоположениями GPS. Однако во время нашего исследования временной интервал изменился, поэтому некоторые даты имеют 3 записи в день, а некоторые из них имеют только один. Например:Как подмножить штампы datetime для случайного хранения только одного значения в день в R?

[1] 2014-12-24 03:00:00 
[2] 2014-12-24 12:00:00 
[3] 2014-12-24 22:00:00. 

Есть дублирующие DateTimes, а что мне нужно тонко, но они имеют различные местоположения GPS:

[55] 2015-11-03 12:00:00 
[56] 2015-11-03 12:00:00. 

В конце концов, мне нужно только одну запись в день, и я хотел бы, чтобы произвольно выбирайте, какой из них удаляется, чтобы в итоге получить сочетание значений времени. Например:

[1] 2014-12-24 12:00:00 
[2] 2014-12-25 22:00:00. 

Я попробовал !duplicate функцию с датой только в отдельной колонке, но проблема в том, что возвращает только первое значение, так что все время будет в 3:00 утра. Пример кода:

oneaday6730 <- xFox6730[!duplicated(xFox6730$Date), drop = FALSE] 
+0

Какова структура ваших данных? Ответ действительно зависит от этого. Используйте 'dput (yourData)' – GGamba

+0

Запишите порядок своих данных, де-дублируйте его, а затем переупорядочите оставшиеся строки. – Gregor

+0

@GGamba мои данные взяты из CSV, и это мои заголовки столбцов: Имена = c («RecordID», «DateTime», «Zone», «Northing», «Easting», «Type», «DenID», «Gender »,« Сайт », « Сезон »,« Время »,« Дата »,« TTF »,« Высота »,« Maxsnr »,« Hdop », « Vdop »,« Satt »,« Fix »,« V1 "," T1 "," X22 "). – gisatHTH

ответ

0

С dplyr, предполагая mydf ваши данные:

mydf %>% 
    group_by(Date) %>% 
    sample_n(1) -> result 

Обратите внимание, что я делаю некоторые предположения о структуре данных, в частности, что Date столбец содержит дату вы хотите попробовать.

+0

Спасибо @GGamba. %>% дал ошибку, но этот код работал для меня («xFox6730» - это мой файловый фрейм): install.packages («dplyr») library (dplyr) bydate <- group_by (xFox6730, Date) oneadaytest <- sample_n (bydate, 1) – gisatHTH

+0

PLS рассмотреть вопрос о принятии ответа – GGamba