我正在嘗試根據條件重新編碼一個因素,但是,我無法做到。
請你幫助我好嗎?
這是我的代碼
if(df$ID = "x"){
df$ID <- recode_factor(df$ID, x == "Stack")
}else if (df$ID = "y"){
df$ID <- recode_factor(df$ID, y=="Stack")
} else {
df$ID <- recode_factor(df$ID, "Other")
}
我想執行以下操作:
如果列 ID 具有值 x 或 y,則應將其重命名為 Stack。如果它有任何其他值,則應將其重命名為其他
uj5u.com熱心網友回復:
您應該使用 vectorizedifelse而不是if,它只檢查單個值。
假設您的資料如下所示:
df <- data.frame(ID = factor(c("y", "x", "a", "x", "x", "b", "y")))
df
#> ID
#> 1 y
#> 2 x
#> 3 a
#> 4 x
#> 5 x
#> 6 b
#> 7 y
然后你可以用單行重構:
df$ID <- factor(ifelse(df$ID == "x" | df$ID == "y", "Stack", "Other"))
或者,等效地:
df$ID <- factor(ifelse(df$ID %in% c("x", "y"), "Stack", "Other"))
其中任何一個都會導致:
df
#> ID
#> 1 Stack
#> 2 Stack
#> 3 Other
#> 4 Stack
#> 5 Stack
#> 6 Other
#> 7 Stack
您還可以使用以下的版本,這并不需要ifelse在所有
df$ID <- factor(c("Other", "Stack")[df$ID %in% c("x", "y") 1])
由reprex 包( v2.0.0 )于 2021 年 11 月 6 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351293.html
標籤:r
