我有一个包含多列的数据框,我希望能够隔离其中两列并获得唯一值的总量...这里有一个例子来说明我的意思:
假设我有一个 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()来计算行数。你知道我是怎么做到的吗
5条答案
按热度按时间ercv8c1e1#
这非常适合
union
:ajsxfq5m2#
使用这种方法,无论有多少列,都可以获得唯一值:
然后,只使用
length
。lmyy7pcs3#
试试这个:
yeotifhr4#
通用方法:
所有不同的元素将位于:
uq_elem
up9lanfz5#
库(dplyr)
df %>% distinct(v1,.keep_all=TRUE)