如何列出向量中的不同值,其中的值是可复制的?我的意思是,类似于下面的 SQL 语句:
SELECT DISTINCT product_code FROM data
Try using the duplicated function in combination with the negation operator "!".
例如:
wdups <- rep(1:5,5) wodups <- wdups[which(!duplicated(wdups))]
希望能帮上忙。
你是说 unique:
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()函数,例如。
factor
levels()
levels( data$product_code )
如果它不是一个因子,但它应该是,您可以首先使用 factor()函数将它转换为因子,例如。
factor()
levels( factor( data$product_code ) )
Another option, as mentioned above, is the unique() function:
unique()
unique( data$product_code )
两者之间的主要区别(当应用到 factor时)是,levels将按级别的顺序返回一个字符向量,包括任何编码但没有发生的级别。unique将按值首次出现的顺序返回一个 factor,并省略任何未出现的级别(尽管仍包含在返回因子的 levels中)。
levels
another way would be to use dplyr package:
dplyr
x = c(1,1,2,3,4,4,4) dplyr::distinct(as.data.frame(x))
在 R Language(版本3.0 +)中,您可以应用过滤器从列表中获得唯一性-
R Language
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))
结果,
mpg cyl disp hp drat wt qsec vs am gear carb 25 3 27 22 22 29 30 2 2 3 6
$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....