我有兩個功能:
METAL <- function(x){
between(x, 241,259)|
between(x,271,309)
}
MOTOR <- function(x){
x == 452|
x == 454)
}
我想將該函式用作 ifelse 公式中的條件。
DF$SUB <- ifelse(DF$IND == METAL(DF$IND), "Metal", "Other")
DF$SUB <- ifelse(DF$IND == MOTOR(DF$IND), "Motor", DF$SUB)
它將每一行標記為“其他”。即使是 IND == 241 且應標記為“金屬”的行。
IND 包含從 10 到 999 的數字
我想在 DF 中添加一個名為 SUB 的新列,并寫入列“Metal”,其中列 IND 與函式 METAL 中定義的相同,在定義為 MOTOR 的地方寫下“Motor”,在所有其他中寫下“Other”行。
我如何正確地將函式放入 ifelse 中?我需要它作為一個函式,這樣如果我更改引數,它將在代碼中的任何地方更改,而不僅僅是一個地方。
謝謝
uj5u.com熱心網友回復:
您的函式正在回傳邏輯,不再需要將它們與 IND 列進行比較。
#example data
DF <- data.frame(IND = c(240:243, 260, 451, 452, 454, 455))
METAL <- function(x) between(x, 241, 259) | between(x, 271, 309)
MOTOR <- function(x) x == 452 | x == 454
DF$SUB <- ifelse(METAL(DF$IND), "Metal",
ifelse(MOTOR(DF$IND), "Motor", "Other"))
DF
# IND SUB
# 1 240 Other
# 2 241 Metal
# 3 242 Metal
# 4 243 Metal
# 5 260 Other
# 6 451 Other
# 7 452 Motor
# 8 454 Motor
# 9 455 Other
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/417515.html
標籤:
上一篇:從資料集創建高余額和低余額計算
