【问题标题】:Remove Columns from a table that are 90% one value从表中删除 90% 为一个值的列
【发布时间】:2021-11-10 22:18:19
【问题描述】:

示例数据:

A<- c(1,2,3,4,1,2,3,4,1,2)
B<- c(A,B,C,D,E,F,G,H,I,J)
C<- c(1,1,1,1,1,1,1,1,1,0)
D<- c(TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE)
df1<-data.frame(A,B,C,D)

df1 %>%
  select_if(
    ###column is <90% one value
  )

所以我有一个表,其中有几列主要是一个值——比如上面例子中的 C 和 D。我需要删除任何具有 90% 或更多唯一值的列。如何删除符合此条件的列?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我们可以使用selectwhere,使用table 获取频率计数,转换为proportions,获取max 值并检查它是否小于.90 以选择特定列

    library(dplyr)
    df1 <- df1 %>% 
        select(where(~ max(proportions(table(.))) < .90))
    

    数据

    df1 <- structure(list(A = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2), B = c("A", 
    "B", "C", "D", "E", "F", "G", "H", "I", "J"), C = c(1, 1, 1, 
    1, 1, 1, 1, 1, 1, 0), D = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 
    TRUE, TRUE, TRUE, FALSE)), class = "data.frame", row.names = c(NA, 
    -10L))
    

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多