【问题标题】:List distinct values in a vector in R列出 R 中向量中的不同值
【发布时间】:2011-12-07 00:02:12
【问题描述】:

如何在值可复制的向量中列出不同的值?我的意思是,类似于下面的 SQL 语句:

SELECT DISTINCT product_code
FROM data

【问题讨论】:

    标签: r vector distinct-values r-faq


    【解决方案1】:

    这也可以,

    1) unlist(lapply(mtcars, function(x) length(unique(x))))
    2) lapply(mtcars, function(x) unique(x))
    

    结果,

    1. mpg  cyl disp   hp drat   wt qsec   vs   am gear carb 
       25    3   27   22   22   29   30    2    2    3    6 
      
    2. $mpg
      [1] 21.0 22.8 21.4 18.7 18.1 14.3 24.4 19.2 17.8 16.4 17.3 15.2 10.4 14.7 32.4 30.4 33.9 21.5 15.5 13.3 27.3 26.0 15.8 19.7 15.0
      $cyl
      [1] 6 4 8
      $ and so on....
      

    【讨论】:

    • 这不会像 OP 预期的那样给出输出!!
    【解决方案2】:

    R Language(3.0+ 版)中,您可以应用过滤器以从列表中获取唯一性-

    data.list <- data.list %>% unique

    或将其与其他操作结合起来

    data.list.rollnumbers <- data.list %>% pull(RollNumber) %>% unique

    unique 不需要dplyr

    【讨论】:

    • 有没有一个函数可以完全替代“pull”和“unique”?
    • 目前我在 R 中没有这么短的符号。Python 可能有它。
    【解决方案3】:

    另一种方法是使用dplyr 包:

    x = c(1,1,2,3,4,4,4)
    dplyr::distinct(as.data.frame(x))
    

    【讨论】:

      【解决方案4】:

      如果数据实际上是factor,那么您可以使用levels() 函数,例如

      levels( data$product_code )
      

      如果不是因子,但应该是因子,您可以先使用factor() 函数将其转换为因子,例如

      levels( factor( data$product_code ) )
      

      如上所述,另一个选项是unique() 函数:

      unique( data$product_code )
      

      两者之间的主要区别(当应用于factor 时)是levels 将返回按级别顺序排列的字符向量,包括已编码但未出现的任何级别。 unique 将按照值首先出现的顺序返回一个factor,省略任何未发生的级别(尽管仍包含在返回因子的levels 中)。

      【讨论】:

        【解决方案5】:

        你也可以在 R 中使用 sqldf 包。

        Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
        

        【讨论】:

          【解决方案6】:

          你的意思是unique:

          R> x = c(1,1,2,3,4,4,4)
          R> x
          [1] 1 1 2 3 4 4 4
          R> unique(x)
          [1] 1 2 3 4
          

          【讨论】:

            【解决方案7】:

            尝试将重复函数与否定运算符“!”结合使用。

            例子:

            wdups <- rep(1:5,5)
            wodups <- wdups[which(!duplicated(wdups))]
            

            希望对您有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-05-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多