繁体   English   中英

在mutate()中使用case_when()为因子变量创建级别

[英]Using case_when() within mutate() to create levels for a factor variable

我想创建一个因子变量,其中所有标点符号均已正确标记,并且所有字符均标记为“ char”

char <- read.xlsx("ccp35.xlsx", sheet="CCP")
chars <- tbl_df(char)
chars$punc <- chars %>%
    mutate(punc = case_when(
        chars$Character =="," ~ "comma",
        chars$Character =="。"| "Character" =="?" ~ "stop"
        TRUE ~ "char"))

我尝试过不带TRUE〜“ char”行的代码,它工作得很好,所有字符都标记为“ NA”。

但是,当我添加最后一行时,出现了一个错误:

Error: unexpected numeric constant in:
"chars$Character =="。"| "Character" =="?" ~ "stop"
TRUE"

您的代码中有几个错误:

  1. 您在参数列表中忘记了逗号。
  2. 您不小心将Character放在引号中并将其视为字符串-语法高亮在此处提供了提示。
  3. mutate返回一个小标题,您应该将其分配给例如chars 绝对不是chars$punc
  4. 虽然不是错误,但是代码中的chars$是多余的。
  5. 我还建议使用名称不明确的中间变量,并使用管道代替完整表达式。

这给我们留下了:

chars <- read.xlsx("ccp35.xlsx", sheet="CCP") %>%
    as_tibble() %>%
    mutate(
        punc = case_when(
            Character == "," ~ "comma",
            Character == "。" | Character == "?" ~ "stop",
            TRUE ~ "char"
        )
    )

我也敦促您一致地设置代码格式,并始终在中缀运算符周围放置单个空格(如我的代码中所述)。

我没有您的数据,但是您似乎忘记了在"Character"=="?"之前添加“ chars $ "Character"=="?" 更改chars$Character =="。"| "Character" =="?" ~ "stop" chars$Character =="。"| "Character" =="?" ~ "stop" with chars$Character =="。" | chars$Character =="?" ~ "stop" chars$Character =="。" | chars$Character =="?" ~ "stop" ,看看会发生什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM