【问题标题】:mutate with if without else用 if 改变,没有 else
【发布时间】:2017-07-20 23:39:46
【问题描述】:

我想用 if 语句而不是 ifelse 语句来改变列值。因为,我没有找到正确的说法,所以我尝试了这个:我有一个数据框test

index
A lunch
B kunch

我跑

tmp<-mutate(test,index=ifelse(index == "kunch","flunch",test$index))

我为tmp 得到这个

索引 1 2 2 次击球

如何保留lunch 的值?

编辑:

structure(list(index = structure(c(2L, 1L), .Label = c("kunch", 
"lunch"), class = "factor")), .Names = "index", row.names = c("A", 
"B"), class = "data.frame")

【问题讨论】:

  • @HubertL 在编辑部分
  • @HubertL 非常感谢您,您能否提供答案以便我接受!

标签: r dplyr


【解决方案1】:

因为“flunch”是character 类型,所以ifelse 返回一个character 向量。它需要转换为factor 的索引,但它与as.character 不正确,所以你必须自己做:

tmp <- mutate(test,index=ifelse(index=="kunch", "flunch", as.character(index)))

如果您需要将index 保留为factor,则可以:

tmp$index <- as.factor(tmp$index)

编辑

您也可以简单地更改level 的值:

levels(test$index)[levels(test$index)=="kunch"] <- "flunch"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2020-03-20
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多