如何在 R 中根據條件建立兩個列的比率列?


要根據 R 資料框中的條件建立兩列比率的新列,我們可以使用 ifelse 函式結合除號。

例如,如果我們有一個名為 df 的資料框,其中包含兩列 X 和 Y,並且我們想要根據 X 大於 5 的條件建立 X 和 Y 比率的新列,則可以使用以下命令:

df$Ratio_X_Y<-with(df,ifelse(X>5,X/Y,NA))

示例 1

以下程式碼片段建立了一個示例資料框:

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

輸出

建立了以下資料框:

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

為了找到 x1 和 x2 的比率(如果 x1 小於 4 則返回 NA,否則返回比率),請將以下程式碼新增到上述程式碼片段中:

df1$Ratio_x1_x2<-with(df1,ifelse(x1<4,x1/x2,NA))
df1

輸出

如果您將以上所有程式碼片段作為單個程式執行,它將生成以下輸出:

  x1  x2  Ratio_x1_x2
1  0  0         NaN
2  2  6   0.3333333
3  3  1   3.0000000
4  3  0         Inf
5  4  2          NA
6  2  1   2.0000000
7  3  2   1.5000000
8  3  3   1.0000000
9  2  0         Inf
10 3  3   1.0000000
11 0  5   0.0000000
12 2  1   2.0000000
13 4  1          NA
14 2  1   2.0000000
15 4  0          NA
16 1  2   0.5000000
17 1  2   0.5000000
18 3  2   1.5000000
19 6  4          NA
20 1  0         Inf

示例 2

以下程式碼片段建立了一個示例資料框:

y1<-sample(0:9,20,replace=TRUE)
y2<-sample(0:9,20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

輸出

建立了以下資料框:

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

為了找到 y1 和 y2 的比率(如果 y1 小於 5 則返回 NA,否則返回比率),請將以下程式碼新增到上述程式碼片段中:

df2$Ratio_y1_y2<-with(df2,ifelse(y1<5,y1/y2,NA))
df2

輸出

如果您將以上所有程式碼片段作為單個程式執行,它將生成以下輸出:

   y1 y2 Ratio_y1_y2
1  6  7         NA
2  2  2  1.0000000
3  9  1         NA
4  2  2  1.0000000
5  0  0        NaN
6  6  1         NA
7  5  1         NA
8  3  7  0.4285714
9  4  9  0.4444444
10 6  3         NA
11 2  8  0.2500000
12 1  6  0.1666667
13 7  7         NA
14 3  2  1.5000000
15 5  5         NA
16 9  5         NA
17 6  7         NA
18 5  0         NA
19 0  1  0.0000000
20 5  4         NA

更新於: 2021年11月2日

609 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告