如何在 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
廣告