如何在 R 中提取至少包含一個非重複值的列?


要從 R 資料框中提取至少包含一個非重複值的列,我們可以使用 Filter 函式。

例如,如果我們有一個名為 df 的資料框,其中包含一些具有重複值的列和至少不包含一個非重複值的列,那麼我們可以使用以下命令提取至少包含一個非重複值的列:

Filter(var,df)

示例 1

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

x1<-rep(10,20)
x2<-rpois(20,1)
x3<-rpois(20,5)
x4<-rep(1,20)
df1<-data.frame(x1,x2,x3,x4)
df1

建立了以下資料框

  x1 x2 x3 x4
1  10 1 2  1
2  10 1 3  1
3  10 1 7  1
4  10 2 5  1
5  10 0 2  1
6  10 1 6  1
7  10 0 7  1
8  10 0 6  1
9  10 0 3  1
10 10 0 6  1
11 10 0 9  1
12 10 0 7  1
13 10 0 6  1
14 10 1 3  1
15 10 1 5  1
16 10 1 5  1
17 10 2 8  1
18 10 0 6  1
19 10 1 1  1
20 10 1 4  1

要在上面建立的資料框上提取 df1 至少包含一個非重複值的列,請將以下程式碼新增到上述程式碼段中:

x1<-rep(10,20)
x2<-rpois(20,1)
x3<-rpois(20,5)
x4<-rep(1,20)
df1<-data.frame(x1,x2,x3,x4)
Filter(var,df1)

輸出

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

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

示例 2

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

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
y3<-rep(0.5,20)
y4<-rep(0.8,20)
df2<-data.frame(y1,y2,y3,y4)
df2

建立了以下資料框

     y1  y2  y3  y4
1   0.7  0.3 0.5 0.8
2   0.4 -1.7 0.5 0.8
3  -0.7 -0.3 0.5 0.8
4   0.5 -1.4 0.5 0.8
5   0.7 -0.8 0.5 0.8
6   0.3  0.4 0.5 0.8
7  -0.8  0.5 0.5 0.8
8   0.3  0.5 0.5 0.8
9   0.4 -0.1 0.5 0.8
10  0.6 -0.3 0.5 0.8
11 -0.8 -1.3 0.5 0.8
12  0.6 -0.9 0.5 0.8
13  2.4  1.0 0.5 0.8
14 -0.6  0.4 0.5 0.8
15  1.8  0.9 0.5 0.8
16 -1.4  0.6 0.5 0.8
17  0.6 -0.1 0.5 0.8
18  0.6  0.7 0.5 0.8
19  0.5 -1.2 0.5 0.8
20 -1.0  0.7 0.5 0.8

要在上面建立的資料框上提取 df2 至少包含一個非重複值的列,請將以下程式碼新增到上述程式碼段中:

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
y3<-rep(0.5,20)
y4<-rep(0.8,20)
df2<-data.frame(y1,y2,y3,y4)
Filter(var,df2)

輸出

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

     y1  y2
1   0.7  0.3
2   0.4 -1.7
3  -0.7 -0.3
4   0.5 -1.4
5   0.7 -0.8
6   0.3  0.4
7  -0.8  0.5
8   0.3  0.5
9   0.4 -0.1
10  0.6 -0.3
11 -0.8 -1.3
12  0.6 -0.9
13  2.4  1.0
14 -0.6  0.4
15  1.8  0.9
16 -1.4  0.6
17  0.6 -0.1
18  0.6  0.7
19  0.5 -1.2
20 -1.0  0.7

更新於: 2021年11月3日

85 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.