R 按列计算唯一值
我寻找这个答案有一段时间了,但没有找到任何东西,所以它在这里。。。给定以下数据帧,如何按列计算不同值的数量R 按列计算唯一值,r,R,我寻找这个答案有一段时间了,但没有找到任何东西,所以它在这里。。。给定以下数据帧,如何按列计算不同值的数量 > df <- data.frame(x = c(1,2,3), y = c(NA, NA, NA), z = c(NA, NA, 1)) > df x y z 1 1 NA NA 2 2 NA NA 3 3 NA 1 >测向 x y z 1纳纳 2 NA NA 3 NA 1 这里有一种方法: library(dplyr) df %>% mutate(a
> df <- data.frame(x = c(1,2,3), y = c(NA, NA, NA), z = c(NA, NA, 1))
> df
x y z
1 1 NA NA
2 2 NA NA
3 3 NA 1
>测向
x y z
1纳纳
2 NA NA
3 NA 1
这里有一种方法:
library(dplyr)
df %>% mutate(across(where(function(x){TRUE}), n_distinct)) %>% distinct()
这仅适用于
dplyr
的n_distinct
函数列。where(function(x){TRUE})
将为每一列返回TRUE
,基本上是跨调用选择中所有内容的一种方式。您也可以在base R
中尝试:
#Code
apply(df,2, function(x) length(unique(x)))
输出:
x y z
3 1 2
使用长度
+唯一
> lengths(sapply(df,unique))
x y z
3 1 2
使用映射
和长度
library(purrr)
map(df, unique) %>% lengths
# x y z
#3 1 2
或使用data.table
library(data.table)
setDT(df)[, lapply(.SD, uniqueN)]