Saatlik verileri içeren birkaç .csv dosyası var. Her dosya, alandaki bir noktadan verileri temsil eder. Başlangıç ve bitiş tarihi her dosyada farklıdır.Tarihte liste tabanındaki koşullu veri kümesi R
verileri kullanılarak R içerisine okunabilir:
lstf1<- list.files(pattern=".csv")
lst2<- lapply(lstf1,function(x) read.csv(x,header = TRUE,stringsAsFactors=FALSE,sep = ",",fill=TRUE, dec = ".",quote = "\""))
head(lst2[[800]])
datetime precip code
1 2003-12-30 00:00:00 NA M
2 2003-12-30 01:00:00 NA M
3 2003-12-30 02:00:00 NA M
4 2003-12-30 03:00:00 NA M
5 2003-12-30 04:00:00 NA M
6 2003-12-30 05:00:00 NA M
datetime
YYYY-MM-DD-HH-MM-SS
olup, precip
veri değeri, code
göz ardı edilebilir. Aşağıdaki koşullara göre 2015-11-30
dönemi 2015-04-01
verilerini seçmek istediğiniz lst2
her dataframe (df) için
df
içinde
precip
Bu süre içinde tüm
NAs
içeriyorsa
1), silin (seçmeyin) 2) precip
'un tümü NAs
değilse, bunu seçin.
İstenen çıkış (lst3
), 2015-04-01
- 2015-11-30
arasındaki alt-yerleşmiş verileri içerir.
sapply(names(lst2),function (x) write.csv(lst3[[x]],file = paste0(names(lst2[x]), ".csv"),row.names = FALSE))
The link to a sample file can be found here (~200 KB)
:lst3
yılında
Tüm dataframes ben gibi bir şey kullanarak dizine lst3
dosyaları yazabilir NA
The şeklinde ifade precip
olmadan days
ve hours
eşit uzunluğa sahip olmalıdır
Evet! Geçerli karekter değerleri varsa ve sadece 2015-04-01 ila 2015-11-30 arası tüm dönem için NA'lar varsa lst2'den bir veri çerçevesini atmak istiyorsa, veri çerçevesindeki NA'ları korumak istiyorum. Kodunuz bunları saklamak yerine bu tarih aralığında "NAs" ile siliyor? Bu tarih aralığı için yalnızca alt kümedeki veriler, eğer preklinik hem NA'lara, hem de değerlere (ve/veya sadece değerlere) sahipse, fakat eğer tümüyle NA'lar ise, bu veri çerçevesini atın. – code123
Kod, veri çerçevesinin tutulup tutulmayacağını belirlemek için 'df.sub' komutunu kullanır: tarih aralığındaki tüm NA'ları kaldırır ve bu sonucu' df.sub' içinde depolar. Daha sonra ikinci parça df'yi tutup tutmayacağınıza karar verir: if 'df.sub' boşsa, sadece NA'lar vardı, bu yüzden çıktı listenize eklemeyin. Eğer df.sub’un bazı içeriği varsa, tüm hedef tarih aralığını 'df'den' df.result' olarak alın ve çıktı listenize ekleyin. – Nat
teşekkürler. Bunu tamamlamak için liste nesnesine uygulayabilir misiniz? Çok teşekkürler. – code123