【问题标题】:Subset a list with date conditions使用日期条件对列表进行子集
【发布时间】:2017-12-06 22:34:27
【问题描述】:

我有一个清单

CLUST_K <- structure(list(LONGITUDE = c(118.5, 118.5, 118.5, 118.5, 118.5, 
                    118.5), LATITUDE = c(-11.5, -11.5, -11.5, -11.5, -11.5, -11.5
                    ), DATE_START = structure(c(1419897600, 1419984000, 1420070400, 
                    1420156800, 1420243200, 1420329600), class = c("POSIXct", "POSIXt"
                    )), DATE_END = structure(c(1420502400, 1420588800, 1420675200, 
                    1420761600, 1420848000, 1420934400), class = c("POSIXct", "POSIXt"
                    )), FLAG = c(2, 1, 2, 2, 2, 2), SURFSKINTEMP = c(13L, 1L, 16L, 
                    16L, 7L, 13L), SURFAIRTEMP = c(6L, 6L, 6L, 6L, 6L, 6L), TOTH2OVAP = c(5L, 
                    17L, 17L, 17L, 17L, 17L), TOTO3 = c(16L, 16L, 16L, 10L, 7L, 7L
                    ), TOTCO = c(12L, 12L, 8L, 4L, 12L, 12L), TOTCH4 = c(13L, 14L, 
                    6L, 6L, 11L, 7L), OLR_ARIS = c(10L, 4L, 4L, 7L, 5L, 10L), CLROLR_ARIS = c(10L, 
                    4L, 4L, 7L, 5L, 10L), OLR_NOAA = c(10L, 10L, 10L, 10L, 7L, 9L
                    ), MODIS_LST = c(1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("LONGITUDE", 
                    "LATITUDE", "DATE_START", "DATE_END", "FLAG", "SURFSKINTEMP", 
                    "SURFAIRTEMP", "TOTH2OVAP", "TOTO3", "TOTCO", "TOTCH4", "OLR_ARIS", 
                    "CLROLR_ARIS", "OLR_NOAA", "MODIS_LST"), row.names = c(NA, 6L
                    ), class = "data.frame")    

以及如何在 2014-01-01 和 2015-01-08 之间使用 date_start 和 date_end 对列表进行子集化,并且 FLAG = 2

我的预期结果是这样的

LONGITUDE LATITUDE DATE_START   DATE_END FLAG SURFSKINTEMP SURFAIRTEMP TOTH2OVAP TOTO3 TOTCO TOTCH4 OLR_ARIS    CLROLR_ARIS OLR_NOAA MODIS_LST
  118.5    -11.5 2014-12-30 2015-01-06    2           13           6         5    16    12     13       10           10       10         1
  118.5    -11.5 2015-01-01 2015-01-08    2           16           6        17    16     8      6        4            4       10         1

【问题讨论】:

    标签: r list subset


    【解决方案1】:

    可以使用子集函数

    subs = subset(CLUST_K, FLAG == 2 & DATE_START > startdate & DATE_END > enddate)
    

    或者,您可以使用 which() 来选择所需的行

    subs = CLUST_K[which(FLAG == 2 & DATE_START > startdate & DATE_END > enddate),]
    

    编辑:您可能需要在定义 CLUST_K 时将结构转换为 DataFrame

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2020-09-09
      • 2015-01-05
      • 2017-07-25
      • 1970-01-01
      • 2015-11-27
      • 2017-09-06
      • 2017-10-31
      • 2020-10-29
      相关资源
      最近更新 更多