簡體   English   中英

如何在 R 中使用 ifelse 語句

[英]How to Use ifelse Statements in R

這是我的代碼,它不起作用。 我究竟做錯了什么?

nmesRAW <- read.csv("nmesUNPROC.csv")
nmesRAW$beltuse <- ifelse(nmesRAW$beltuse == 1, ‘Rarely’, ifelse(nmesRAW$beltuse == 2 ‘Sometimes’, ifelse(nmesRAW$beltuse == 3 ‘Always’)))

我想在此列中將所有 1 替換為很少,將所有 2 替換為有時,將所有 3 替換為 always。 我怎么做?

這就是您使用switch()對數據執行此操作的方式:

nmesRAW$beltuse <- sapply(nmesRAW$beltuse, function(x) switch(x, "1"="Rarely", "2"="Sometimes", "3"="Always"))

使用一些可重復性的代碼示例:

# some random data
nmesRAW <- c(1,3,1,2,3,3)
sapply(nmesRAW, function(x) switch(x, "1"="Rarely", "2"="Sometimes", "3"="Always"))
# output:
[1] "Rarely"    "Always"    "Rarely"    "Sometimes" "Always"    "Always"

僅使用ifelse()

如果你堅持使用ifelse()而沒有別的(我希望這不是功課),那么你的代碼應該如下所示:

nmesRAW$beltuse <- ifelse(nmesRAW$beltuse == 1, 'Rarely', ifelse(nmesRAW$beltuse == 2, 'Sometimes', 'Always'))

您的代碼給您這些錯誤的原因是因為您在第二個嵌套 if-else 中缺少逗號,並且在第三個嵌套 if-else 中缺少一個“else”語句。

正如你所看到的,當你以這種方式嵌套 if-else 時,它有點到處都是,並且很快就會失控。

當您執行ifelse時,您將始終需要:

  • test ,測試的條件。
  • yes條件
  • no條件

語法看起來像這樣ifelse(x$var>10, "Large", "Small") 當你按照你的方式嵌套你的 ifelse 時,你很快就會忘記這一點,因此缺少逗號,以及最后一個ifelse中缺少的no條件。

暫無
暫無

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

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