我正在嘗試使用 ifelse() 函式將資料集中的列年齡重新編碼為三個大致相等的“年輕”、“中間”和“舊”組。我可能做錯了什么或遺漏了什么。
我真正想做的是給28歲以下的每個年齡組取“年輕”的名字,之后我想給28到53歲的每個年齡組取“中”這個名字,53歲以上的都應該叫“老的”。這是我嘗試使用的代碼,但它只是將年齡列轉換為一個名稱,在本例中為“中間”。
PU6_exercise_data$age <- ifelse(PU6_exercise_data$age > 28, "middle", "young")
PU6_exercise_data$age <- ifelse(PU6_exercise_data$age > 53, "old", "middle")
uj5u.com熱心網友回復:
似乎 case_when() 在這里更好。您必須決定 = 運算子的去向,即 28 歲的人是“年輕”還是“中年”?
age <- data.frame(age = c(15, 29, 54, 53, 28))
age %>%
mutate(age_bracket = case_when(age >= 28 & age < 53 ~ "middle",
age < 28 ~ "young",
age >= 53 ~ "old"))
uj5u.com熱心網友回復:
問題在于,在第一行中,您將年齡列更改為僅包含“中”或“年輕”字符。這意味著當您嘗試在第二行中檢查年齡時,您實際上是在嘗試檢查“中”或“年輕”是否 > 53,這是行不通的。
您可以按照 jpenzer 建議case_when()從 dplyr 包中使用,也可以使用您的年齡組創建第二列,而不是嘗試更新年齡列本身。
df <- data.frame(age = seq(1, 100, 25))
df$age_group <- ifelse(df$age < 28, "young", "middle")
df$age_group <- ifelse(df$age > 53, "old", df$age_group)
df
age age_group
1 1 young
2 26 young
3 51 middle
4 76 old
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/359733.html
