簡體   English   中英

使用R從數據框中提取唯一值

[英]Extracting unique values from data frame using R

我有一個包含多列的數據框,我希望能夠隔離兩列並獲得唯一值的總數...這是我的意思的一個例子:

假設我有一個數據框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()計算行數。 任何想法我是如何實現這一目標的?

這非常適合union

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

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

嘗試這個:

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

使用這種方法,您可以獲得唯一值,無論您擁有多少列:

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

然后,只需使用length

通用方法:

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

所有不同的元素都在: uq_elem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM