使用R从 Dataframe 中提取唯一值

oo7oh9g9  于 2023-06-27  发布在  其他
关注(0)|答案(5)|浏览(116)

我有一个包含多列的数据框,我希望能够隔离其中两列并获得唯一值的总量...这里有一个例子来说明我的意思:
假设我有一个 Dataframe df:

df<- data.frame(v1 = c(1, 2, 3, 2, "a"), v2 = c("a", 2 ,"b","b", 4))
df

  v1 v2
1  1  a
2  2  2
3  3  b
4  2  b
5  a  4

现在我想做的是提取两列上的唯一值。因此,如果我对每一列使用unique(),输出将如下所示:

> unique(df[,1])
[1] 1 2 3 a
> unique(df[,2])
[1] a 2 b 4

但这并不好,因为它只找到每列的唯一值,而我需要两列的唯一值的总量!例如,'a'在两列中都重复出现,但我只希望它计数一次。对于我需要的示例输出;假设列V1和V2被放置在彼此的顶部上,就像这样:

V1_V2
1      1
2      2
3      3
4      2
5      a
6      a
7      2
8      b
9      b
10     4

V1_V2的唯一值为:

V1_V2
1      1
2      2
3      3
5      a
8      b
10     4

然后我可以使用nrow()来计算行数。你知道我是怎么做到的吗

ercv8c1e

ercv8c1e1#

这非常适合union

data.frame(V1_V2=union(df$v1, df$v2))

#  V1_V2
#1     1
#2     2
#3     3
#4     a
#5     b
#6     4
ajsxfq5m

ajsxfq5m2#

使用这种方法,无论有多少列,都可以获得唯一值:

df2 <- as.vector(as.matrix(df))
unique(df2)

然后,只使用length

lmyy7pcs

lmyy7pcs3#

试试这个:

unique(c(df[,1], df[,2]))
yeotifhr

yeotifhr4#

通用方法:

uq_elem=c()
for(i in 1:ncol(df))
{
  uq_elem=c(unique(df[,i]), uq_elem)
  uq_elem=unique(uq_elem)
}

所有不同的元素将位于:uq_elem

up9lanfz

up9lanfz5#

库(dplyr)
df %>% distinct(v1,.keep_all=TRUE)

相关问题