在 R 中列出向量中的非重复值

List distinct values in a vector in R

提问人:Mehper C. Palavuzlar 提问时间:10/13/2011 最后编辑:zx8754Mehper C. Palavuzlar 更新时间:4/27/2021 访问量:282215

问:

如何在值是复制的向量中列出非重复值?我的意思是,类似于以下 SQL 语句:

SELECT DISTINCT product_code
FROM data
量非区分值 R-FAQ

评论


答:

8赞 Al R. 10/13/2011 #1

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

例:

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

希望能有所帮助。

195赞 csgillespie 10/13/2011 #2

你的意思是: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赞 Clay Burns 4/1/2016 #3

还可以在 R 中使用 sqldf 包。

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
17赞 isapir 4/18/2018 #4

如果数据实际上是一个,那么你可以使用这个函数,例如factorlevels()

levels( data$product_code )

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

levels( factor( data$product_code ) )

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

unique( data$product_code )

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

0赞 AlexB 9/25/2020 #5

另一种方法是使用包:dplyr

x = c(1,1,2,3,4,4,4)
dplyr::distinct(as.data.frame(x))
0赞 Vishal Kumar Sahu 1/5/2021 #6

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

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

或将其与其他操作结合使用

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

unique不需要 .dplyr

评论

0赞 Alvaro Morales 6/17/2021
有没有一个功能可以完全取代“pull”和“unique”?
0赞 Vishal Kumar Sahu 6/18/2021
目前我在 R 中还没有这么短的符号,Python 可能有它。
0赞 Seyma Kalay 4/27/2021 #7

这也可能起作用,

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

评论

0赞 AnilGoyal 4/27/2021
这不会像 OP 预期的那样提供输出!!