如何在 R 資料框中基於另一列的某些條件建立一個新列?
有時我們想更改一列或使用資料框的其他列建立一個新列,這在建立分類列時通常需要,但也可以用於數值列。例如,我們可能想根據薪水建立一個列,如果薪水大於另一列中的薪水,則新增這些薪水,否則取兩者的差值。這將幫助我們瞭解兩列中的薪水是否相等、小於或大於。在 R 中,我們可以為此目的使用 transform 函式。
示例 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
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP