如何在 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
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输出
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
广告