在 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP