如何根据另一列的某些条件在R数据框中创建新列?

有时我们想要更改列或通过使用R中的数据框的其他列来创建新列,这在我们想要创建分类列时最需要,但是对于数字列也可以做到。例如,我们可能想基于薪水创建一列,如果薪水大于另一列中的薪水,则将其加起来,否则取两者之间的差额。这将有助于我们了解两栏中的薪水是相等,较低还是较高。在R中,我们可以为此使用变换功能。

例1

请看以下数据帧:

> set.seed(1001)

> x1<-rpois(20,1)

> y1<-rpois(20,5)

> df1<-data.frame(x1,y1)

> df1

输出结果

  x1 y1

1  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 z1

1  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 z1

1  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 z1

1 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

回到顶部