繁体   English   中英

计算R中多个列的唯一值

[英]count unique values of multiple columns in R

假设我有这样的data.frame:

a b 1
b c 2
c e 3
d a 4

我试图计算前两列的唯一值,因此结果应为5 ,代表abcde

但是我的问题是我的数据如此之大,大约有7,000,000行,因此我想将第二行的行追加到第一行。 但是我只知道如何一次添加一行,因此任何人都对如何将整个列添加到第一列有任何想法? 还是您有解决此问题的更好主意?

提前致谢

我们可以将unlistunique

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))

作为一种紧凑的替代方案,您还可以使用set函数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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM