繁体   English   中英

ifelse 在突变 function 在 r

[英]ifelse in a mutate function in r

我正在尝试使用 r 中的变异 function 添加具有条件的列,但不断出现错误。 代码直接来自老师的讲座,但发生了错误。 LineItem 列是一个因素 class,我不确定这是否会有所不同。 请就我所缺少的提出建议。

谢谢你,阿维

df <- read.csv('ities_short.csv')

colSums(is.na(df))

sl <- str_length(df$LineItem)
avg <- mean(str_length(df$LineItem))

df <- df %>% mutate(LineItem_LongName = ifelse(sl > avg), 1, 0)

ifelse(sl > avg)中的错误:缺少参数“yes”,没有默认值

你把')'放在了错误的地方。 ifelse 的一般语法是: ifelse(cond,value if true, value if false)

df <- read.csv('ities_short.csv')

colSums(is.na(df))

sl <- str_length(df$LineItem)
avg <- mean(str_length(df$LineItem))

df <- df %>% mutate(LineItem_LongName = ifelse(sl > avg, 1, 0))

@Nirbhay Singh 的答案是正确的。 但是,如果您比较两个向量,通常最好使用dplyr::if_else因为它对NA值更严格:

df <- df %>% mutate(LineItem_LongName = if_else(sl > avg, 1, 0))

文档

不要创建单独的对象并在 dataframe 中使用它,而是将它们保存在 dataframe 本身中。 您可以稍后删除不需要的列。 此外,您可以在没有ifelse的情况下执行此操作。

library(dplyr)
library(stringr)

df %>%
   mutate(temp = str_length(LineItem), 
          LineItem_LongName = as.integer(temp > mean(temp)))

或者在基础 R 中:

df$temp <- nchar(df$LineItem)
transform(df, LineItem_LongName = +(temp > mean(temp)))

暂无
暂无

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

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