如何在 R 資料框列中提取不重複的值?


通常,重複值是在第一次出現後才被考慮,但值的第一次出現也是其餘重複值的副本。因此,我們可能也希望將其排除。

藉助 `duplicated` 函式和否定運算子,可以輕鬆地從 R 資料框列中提取不重複的值,如下面的示例所示。

示例 1

以下程式碼片段建立了一個示例資料框:

x<-rpois(20,10)
df1<-data.frame(x)
df1

建立了以下資料框

    x
1  16
2   5
3  17
4   7
5   6
6   7
7  14
8  10
9   7
10 13
11 11
12 15
13  4
14 10
15 16
16 11
17 10
18 11
19  9
20 11

為了從上面建立的資料框的 x 中提取不包含第一次重複的不重複值,請將以下程式碼新增到上面的程式碼片段中:

x<-rpois(20,10)
df1<-data.frame(x)
df1$x[!(duplicated(df1$x)|duplicated(df1$x,fromLast=TRUE))]

輸出

如果您將以上所有程式碼片段作為單個程式執行,則會生成以下輸出:

[1] 5 17 6 14 13 15 4 9

示例 2

以下程式碼片段建立了一個示例資料框:

y<-sample(1:10,20,replace=TRUE)
df2<-data.frame(y)
df2

建立了以下資料框

    y
1   8
2  10
3   1
4   5
5   5
6   2
7   1
8   2
9   6
10  7
11 10
12  5
13  7
14  4
15  2
16  1
17  6
18  5
19 10
20  7

為了從上面建立的資料框的 y 中提取不包含第一次重複的不重複值,請將以下程式碼新增到上面的程式碼片段中:

y<-sample(1:10,20,replace=TRUE)
df2<-data.frame(y)
df2
df2$y[!(duplicated(df2$y)|duplicated(df2$y,fromLast=TRUE))]

輸出

如果您將以上所有程式碼片段作為單個程式執行,則會生成以下輸出:

[1] 8 4

示例 3

以下程式碼片段建立了一個示例資料框:

z<-sample(501:510,20,replace=TRUE)
df3<-data.frame(z)
df3

建立了以下資料框

     z
1  509
2  507
3  504
4  508
5  502
6  510
7  508
8  506
9  503
10 508
11 507
12 508
13 502
14 508
15 506
16 510
17 505
18 510
19 510
20 505

為了從上面建立的資料框的 y 中提取不包含第一次重複的不重複值,請將以下程式碼新增到上面的程式碼片段中:

z<-sample(501:510,20,replace=TRUE)
df3<-data.frame(z)
df3$z[!(duplicated(df3$z)|duplicated(df3$z,fromLast=TRUE))]

輸出

如果您將以上所有程式碼片段作為單個程式執行,則會生成以下輸出:

[1] 509 504 503

更新於:2021年11月1日

1K+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告