[英]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行,因此我想将第二行的行追加到第一行。 但是我只知道如何一次添加一行,因此任何人都对如何将整个列添加到第一列有任何想法? 还是您有解决此问题的更好主意?
提前致谢
我们可以将unlist
与unique
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.