【问题标题】:How do I remove all unique values with certain amount of observations? [duplicate]如何删除具有一定观察量的所有唯一值? [复制]
【发布时间】:2021-07-14 16:35:18
【问题描述】:

样本数据

date1 = seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date2= seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date3 = seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date4 = seq(as.Date("2019/01/01"), by = "month", length.out = 10)

subproducts1=rep("1",29)
subproducts2=rep("2",29)
subproductsx=rep("x",29)
subproductsy=rep("y",10)

b1 <- c(rnorm(29,5))
b2 <- c(rnorm(29,5))
b3 <-c(rnorm(29,5))
b4 <- c(rnorm(10,5))


dfone <- data.frame("date"= c(date1,date2,date3,date4),
                "subproduct"= 
                  c(subproducts1,subproducts2,subproductsx,subproductsy),
                "actuals"= c(b1,b2,b3,b4))

问题:如何删除所有观察值小于等于 10 的子产品?

【问题讨论】:

    标签: r dplyr data-manipulation


    【解决方案1】:

    我们可以通过“子产品”和filter 那些观察次数 (n()) 大于或等于 10 的组进行分组

    library(dplyr)
    dfone %>%
         group_by(subproduct) %>%
         filter(n() >= 10) %>%
         ungroup
    

    或者没有任何包依赖

    subset(dfone, subproduct %in% names(which(table(subproduct) >= 10)))
    

    【讨论】:

      【解决方案2】:

      使用 plyr 库的 count() 函数,我们可以做到这一点。

      dfcheck <- plyr::count(dfone$subproduct)
      dfcheck <- dfcheck[dfcheck$freq>10,]
      dftwo <- dfone[dfone$subproduct %in% dfcheck$x,]
      

      count() 会给我们一个数据集,其中我们的变量出现在 x 列下,它们的频率出现在 freq 下。使用它,我们可以为超过 10 的值设置子集,并为出现在 >10 dfcheck 数据集中的子产品子集我们的原始数据集。

      【讨论】:

        猜你喜欢
        • 2016-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2022-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多