如何在 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
廣告