在 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.