在 R 資料框中,根據條件用最大值替換列中的每個值。


假設我們在一個名為 df 的 R 資料框中,有三個列 X、Y 和 Z,我們想在 X 和 Y 列中替換值,如果這些值大於 Z 中的值,則用相同的值替換,如果它們小於 Z 中的值,則可以用 Z 中的值替換。

檢視下面的示例,瞭解如何實現。

示例 1

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

x1<-rpois(20,2)
x2<-rpois(20,2)
X<-rpois(20,3)
df1<-data.frame(x1,x2,X)
df1

建立了以下資料框

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

要在上面建立的資料框中,如果 x1 和 x2 小於 X,則用 X 替換 x1 和 x2 中的值,請將以下程式碼新增到上述程式碼片段中 -

x1<-rpois(20,2)
x2<-rpois(20,2)
X<-rpois(20,3)
df1<-data.frame(x1,x2,X)
df1[,1:2]<-lapply(df1[,1:2],function(x) ifelse(xdf1$X,x,X))
df1

輸出

如果您將上面給出的所有程式碼片段作為一個程式執行,它將生成以下輸出 -

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

示例 2

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

y1<-rnorm(20,0.5)
y2<-rnorm(20,0.5)
Y<-rnorm(20,0.5,0.005)
df2<-data.frame(y1,y2,Y)
df2

建立了以下資料框

          y1        y2         Y
 1  0.38903537  2.2068051 0.5082834
 2  0.08703056  1.4083968 0.5056107
 3  0.37278616  1.1038885 0.4990037
 4  0.80350925  1.9704348 0.5038784
 5  0.97611860  1.2431881 0.5008880
 6 -0.61610694  0.7217463 0.4940775
 7 -0.37572148  2.6484561 0.5016710
 8  1.61492508 -0.8688714 0.5046321
 9  0.58858684 -0.7627633 0.5020626
10  2.45589388  0.5280574 0.4963291
11  0.79954296  0.3476735 0.4998230
12  0.32497257 -1.1904892 0.4979471
13 -1.00420011 -1.4069050 0.5007824
14  3.57048593  1.2896375 0.4987264
15  2.26500575  1.5387301 0.5037580
16  1.58224909 -0.9105896 0.4838976
17 -0.31704488 -0.1611695 0.4917168
18  0.89396005 -1.0374997 0.4976947
19 -0.18188955  0.2133147 0.4915311
20  1.27196146 -0.7174173 0.4922855

要在上面建立的資料框中,如果 y1 和 y2 小於 Y,則用 Y 替換 y1 和 y2 中的值,請將以下程式碼新增到上述程式碼片段中 -

y1<-rnorm(20,0.5)
y2<-rnorm(20,0.5)
Y<-rnorm(20,0.5,0.005)
df2<-data.frame(y1,y2,Y)
df2[,1:2]<-lapply(df2[,1:2],function(x) ifelse(xdf2$Y,x,Y))
df2

輸出

如果您將上面給出的所有程式碼片段作為一個程式執行,它將生成以下輸出 -

         y1        y2        Y
 1 0.5082834 2.2068051 0.5082834
 2 0.5056107 1.4083968 0.5056107
 3 0.4990037 1.1038885 0.4990037
 4 0.8035093 1.9704348 0.5038784
 5 0.9761186 1.2431881 0.5008880
 6 0.4940775 0.7217463 0.4940775
 7 0.5016710 2.6484561 0.5016710
 8 1.6149251 0.5046321 0.5046321
 9 0.5885868 0.5020626 0.5020626
10 2.4558939 0.5280574 0.4963291
11 0.7995430 0.4998230 0.4998230
12 0.4979471 0.4979471 0.4979471
13 0.5007824 0.5007824 0.5007824
14 3.5704859 1.2896375 0.4987264
15 2.2650058 1.5387301 0.5037580
16 1.5822491 0.4838976 0.4838976
17 0.4917168 0.4917168 0.4917168
18 0.8939600 0.4976947 0.4976947
19 0.4915311 0.4915311 0.4915311
20 1.2719615 0.4922855 0.4922855

更新於: 2021-11-10

158 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.