如何根据另一列的某些条件在R数据框中创建新列?
有时我们想要更改列或通过使用R中的数据框的其他列来创建新列,这在我们想要创建分类列时最需要,但是对于数字列也可以做到。例如,我们可能想基于薪水创建一列,如果薪水大于另一列中的薪水,则将其加起来,否则取两者之间的差额。这将有助于我们了解两栏中的薪水是相等,较低还是较高。在R中,我们可以为此使用变换功能。
例1
请看以下数据帧:
> set.seed(1001)> x1<-rpois(20,1)
> y1<-rpois(20,5)
> df1<-data.frame(x1,y1)
> df1
输出结果
x1 y11 4 6
2 1 4
3 1 9
4 1 6
5 1 4
6 2 7
7 0 6
8 0 3
9 0 8
10 2 4
11 1 5
12 0 9
13 2 10
14 1 4
15 0 3
16 2 2
17 0 2
18 0 6
19 0 6
20 2 2
创建一列z1,如果x1大于y1,则将从x1中减去y1,否则添加:
示例
> df1<-transform(df1,z1=ifelse(x1>y1,x1-y1,x1+y1))> df1
输出结果
x1 y1 z11 4 6 10
2 1 4 5
3 1 9 10
4 1 6 7
5 1 4 5
6 2 7 9
7 0 6 6
8 0 3 3
9 0 8 8
10 2 4 6
11 1 5 6
12 0 9 9
13 2 10 12
14 1 4 5
15 0 3 3
16 2 2 4
17 0 2 2
18 0 6 6
19 0 6 6
20 2 2 4
例2
> df2<-transform(df1,z1=ifelse(x1 df2
输出结果
x1 y1 z11 4 6 2
2 1 4 3
3 1 9 8
4 1 6 5
5 1 4 3
6 2 7 5
7 0 6 6
8 0 3 3
9 0 8 8
10 2 4 2
11 1 5 4
12 0 9 9
13 2 10 8
14 1 4 3
15 0 3 3
16 2 2 4
17 0 2 2
18 0 6 6
19 0 6 6
20 2 2 4
例子3
> df3<-transform(df1,z1=ifelse(x1==y1,x1*y1,x1/y1))> df3
输出结果
x1 y1 z11 4 6 0.6666667
2 1 4 0.2500000
3 1 9 0.1111111
4 1 6 0.1666667
5 1 4 0.2500000
6 2 7 0.2857143
7 0 6 0.0000000
8 0 3 0.0000000
9 0 8 0.0000000
10 2 4 0.5000000
11 1 5 0.2000000
12 0 9 0.0000000
13 2 10 0.2000000
14 1 4 0.2500000
15 0 3 0.0000000
16 2 2 4.0000000
17 0 2 0.0000000
18 0 6 0.0000000
19 0 6 0.0000000
20 2 2 4.0000000
以上是 如何根据另一列的某些条件在R数据框中创建新列? 的全部内容, 来源链接: utcz.com/z/352431.html