Я хотел бы подмножить следующий файл csv на основе дат Pentad (не совпадающих средних дат). Например:Подмножество данных csv на основе дат Pentad с использованием R
1.January 1 to January 5
2.January 6 to January 10
...
73.December 27 to December 31.
Вот полный список дат пентадных:
Примеры данных
SN,CY,Y,M,D,H,lat,lon,cat
198305,5,1983,8,5,0,9.1,140.7,"TD"
198305,5,1983,8,5,6,9.3,140.5,"TD"
198305,5,1983,8,5,12,9.6,139.9,"TD"
198305,5,1983,8,5,18,9.9,139.4,"TS"
198305,5,1983,8,6,0,10.2,138.8,"TS"
198305,5,1983,8,6,6,11,138.1,"TS"
198305,5,1983,8,6,12,11.8,137.3,"TS"
198305,5,1983,8,6,18,12.4,136.4,"Cat1"
198305,5,1983,8,7,0,12.8,135.8,"Cat1"
198305,5,1983,8,7,6,13.6,134.7,"Cat1"
198305,5,1983,8,7,12,14.4,133.9,"Cat2"
198305,5,1983,8,7,18,15,133.5,"Cat4"
198305,5,1983,8,8,0,15.8,132.8,"Cat4"
198305,5,1983,8,8,6,16.3,132.4,"Cat4"
198305,5,1983,8,8,12,17.1,132,"Cat5"
198305,5,1983,8,8,18,17.4,131.4,"Cat5"
198305,5,1983,8,9,0,17.8,130.8,"Cat5"
198305,5,1983,8,9,6,18.1,130.7,"Cat4"
198305,5,1983,8,9,12,18.7,130.3,"Cat4"
198305,5,1983,8,9,18,18.9,130.4,"Cat4
SN является уникальным идентификатором, Y является лет , M - месяцы, D - дни, H - часы. Если уникальный номер попадает в один пентад, его больше не следует включать в следующее подмножество.
Я попытался это за август (на основе из предыдущего поста):
P1 <- c(1,6,11,16,21,26)
P6 <- c(5,10,15,20,25,30)
res <- Map(function(x,y) subset(df1, M==8 & D >=x & D <= y), d1, d2)
Но у меня проблема с отображением с исходными пятерками (Р7), потому что она включает в себя 31 января по 4 февраля
Может ли кто-нибудь предложить какие-либо методы для этого в R? Поймите любую помощь.
Я попробовал это, но я не уверен, если это правильный путь, или есть еще более простой способ, чем это (образец для августу до SEP). Я воспользовался «днем года» из вашего кода. Что делает последняя строка df $ pentad? d1 <-c (216,221,226,231,236,241,246,251,256,261,266) d2 <-c (220,225,230,235,240,245,250,255,260,265,270) res <- Карта (функция (x, y) подмножество (df, yday> = x & yday <= y), d1, d2) lapply (res, head , 2) – ichabod
Чтобы получить подмножества, просто разделите (df, df $ pentad) '. Это дает вам список фреймов данных, каждый из которых соответствует пентаде. – sirallen
Wow.Amazing !. Большое спасибо за помощь! – ichabod