如何在 R 数据框中根据另一个数据框中的列值来赋值?


要根据另一列的值为一列赋值,我们可以使用 `ifelse` 函数。`ifelse` 函数使用等号 (==) 检查一个数据框中的一列的值是否与另一个数据框中另一列的值匹配,如果匹配则替换原始值,否则返回原始值。查看下面的示例以了解如何操作。

示例

考虑以下数据框:

在线演示

> x1<-rpois(20,2)
> x2<-rpois(20,5)
> df1<-data.frame(x1,x2)
> df1

输出

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

示例

在线演示

> y1<-rpois(20,2)
> y2<-rpois(20,5)
> df2<-data.frame(y1,y2)
> df2

输出

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

如果 df1 的 x2 与 df2 的 y2 相同,则替换 df1 中 x1 的值,否则返回 df1 中的 x1:

> df1$x1<-ifelse(df1$x2==df2$y2,df2$y2,df1$x1)
> df1

输出

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

更新于:2021年3月4日

5K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告