在 R 中列出向量中不同的值

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

SELECT DISTINCT product_code
FROM data
268221 次浏览

Try using the duplicated function in combination with the negation operator "!".

例如:

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

希望能帮上忙。

你是说 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

您还可以在 R 中使用 sqldf 包。

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

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

levels( data$product_code )

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

levels( factor( data$product_code ) )

Another option, as mentioned above, is the unique() function:

unique( data$product_code )

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

another way would be to use dplyr package:

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

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

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

或者把它和其他手术结合起来

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

unique不需要 dplyr

这可能也行得通,

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....