在R中计算多列的唯一值数量

3
假设我有一个像这样的数据框:
a b 1
b c 2
c e 3
d a 4

我试图统计前两列的唯一值,结果应该是5,分别代表a b c d e
但我的问题是我的数据非常大,有约7,000,000行,所以我想把行的第二列附加到第一列。但我只知道如何逐行添加,有没有人有关于如何将整个列附加到第一列的想法?或者你对解决这个问题有更好的想法?
提前致谢!
2个回答

6
我们可以使用uniqueunlist来处理相关的IT技术内容。
length(unique(unlist(df1[1:2])))
#[1] 5

或者转置数据集,即在子集前两列后,将其连接到vector,获取unique元素并找到length

length(unique(c(t(df1[-3]))))
#[1] 5

数据

df1 <- structure(list(v1 = c("a", "b", "c", "d"), v2 = c("b", "c", "e", 
"a"), v3 = 1:4), .Names = c("v1", "v2", "v3"), class = "data.frame", 
row.names = c(NA, -4L))

0
作为一种紧凑的替代方案,您还可以使用集合函数union
length(with(df1, union(v1, v2)))
[1] 5

union 的底层代码与 @akrun 的代码几乎相同,可以在不使用括号键入函数时看到:

union
function (x, y) 
unique(c(as.vector(x), as.vector(y)))
<bytecode: 0x41f0790>
<environment: namespace:base>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接