簡體   English   中英

如何使用mutate和ifelse將數值變量轉換為具有多個級別的因子變量

[英]How to use mutate and ifelse to convert numerical variables into factor variable with multiple levels

我很難從現有的數字變量創建新的因子變量。 我有一個與參與者的年齡相關的數字變量Age,但想創建一個將參與者的年齡分類為不同類別的因子變量。 每當我運行代碼時,都會出現錯誤:

“錯誤:缺少參數“ no”,沒有默認值。”

我嘗試了以下代碼的不同變體,例如不帶引號的新因子水平,使用:表示范圍等。我的代碼如下。

data.frame%>%
    mutate(Age = ifelse(Age < 20, "0"),
           ifelse(Age >= 20 & Age <= 29, "1"),
                  ifelse(Age >=30 & Age <= 39, "2"),
                        ifelse(Age >= 40 & Age <=49, "3"),
                               ifelse(Age >= 50 & Age <= 59, "4"),
                                     ifelse(Age >= 60 & Age <= 69, "5"),
                                           ifelse(Age >= 70, "6", NA))

cut()是執行此操作的最簡單方法。

在基數R中:

Age <- seq(10,80,by=10)
cut(Age,breaks=c(-Inf,seq(20,70,by=10),Inf),
        right=FALSE,
        labels=as.character(0:6))

我將讓您隨意將其嵌入mutate()中。

您的代碼的問題是您沒有正確嵌套的選擇:將這段代碼與您的代碼進行仔細比較...

Age = ifelse(Age < 20, "0",
         ifelse(Age >= 20 & Age <= 29, "1",
            ifelse(...,[yes],[no])))

尾括號")"應該放在所有ifelse

df1 <- data.frame(Age=c(1:80,NA))

df1%>%
    mutate(Age_cat = factor(ifelse(Age < 20, "0",
           ifelse(Age >= 20 & Age <= 29, "1",
                  ifelse(Age >=30 & Age <= 39, "2",
                        ifelse(Age >= 40 & Age <=49, "3",
                               ifelse(Age >= 50 & Age <= 59, "4",
                                     ifelse(Age >= 60 & Age <= 69, "5",
                                           ifelse(Age >= 70, "6", NA)))))))))

不過,你也應該知道,在dplyr ,這是一個完美的機會case_when

df1 %>%
mutate(Age_cat= factor(case_when(
  .$Age <  20 ~ "0",
  .$Age >= 20 & .$Age <= 29 ~ "1",
  .$Age >= 30 & .$Age <= 39 ~"2",
  .$Age >= 40 & .$Age <=49 ~  "3",
  .$Age >= 50 & .$Age <= 59 ~ "4",
  .$Age >= 60 & .$Age <= 69 ~ "5",
  TRUE  ~"6"))
)
   Age Age_cat
1    1       0
2    2       0
3    3       0
4    4       0
5    5       0
...
13  13       0
14  14       0
15  15       0
16  16       0
17  17       0
18  18       0
19  19       0
20  20       1
21  21       1
22  22       1
23  23       1
24  24       1
...
79  79       6
80  80       6
81  NA    <NA>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM