如何在 R 資料框中根據列值更改行值?


根據列值更改行值意味著如果列值滿足某個條件,我們希望更改特定列的行值。例如,如果我們有一個名為 df 的資料框,其中包含一個名為 x 的列,並且我們希望將 x 中所有大於 5 的值設定為 5,那麼它可以這樣完成:df[df$x>5,]<-5。

示例 1

考慮以下資料框 -

即時演示

> x1<-rpois(20,1)
> x2<-rpois(20,5)
> df1<-data.frame(x1,x2)
> df1

輸出

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

將 x1 中大於 2 的值更改為 2 -

> df1[df1$x1>2,]<-2
> df1

輸出

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

示例 2

即時演示

> y1<-rnorm(20,5,1)
> y2<-rnorm(20,5,0.3)
> df2<-data.frame(y1,y2)
> df2

輸出

         y1       y2
1  4.826729 5.433352
2  3.530581 5.266034
3  5.811061 4.582195
4  5.620806 5.745011
5  4.799159 5.323772
6  5.287042 5.111730
7  5.128602 5.192648
8  4.372339 5.014256
9  5.078192 5.175813
10 4.392499 5.231547
11 4.983643 5.390611
12 4.168723 4.620990
13 2.691008 4.932305
14 3.715511 4.455306
15 3.674058 5.136752
16 5.439690 5.082509
17 6.393444 4.139432
18 5.220288 5.201459
19 4.695000 4.960111
20 5.925427 5.013475

將 y1 中大於 3 的值更改為 3 -

> df2[df2$y1>3,]<-3
> df2

輸出

         y1       y2
1  3.000000 3.000000
2  3.000000 3.000000
3  3.000000 3.000000
4  3.000000 3.000000
5  3.000000 3.000000
6  3.000000 3.000000
7  3.000000 3.000000
8  3.000000 3.000000
9  3.000000 3.000000
10 3.000000 3.000000
11 3.000000 3.000000
12 3.000000 3.000000
13 2.691008 4.932305
14 3.000000 3.000000
15 3.000000 3.000000
16 3.000000 3.000000
17 3.000000 3.000000
18 3.000000 3.000000
19 3.000000 3.000000
20 3.000000 3.000000

更新於: 2021-03-05

410 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告