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

更新于: 2021-03-05

410 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告