【问题标题】:Change values of a column conditionally using pipe() function [duplicate]使用 pipe() 函数有条件地更改列的值
【发布时间】:2019-12-18 11:02:03
【问题描述】:

我想使用dplyr 包的pipe function 有条件地更改列的值。我使用了以下方法-

library(dplyr)
> df = data.frame("Col1" = letters[1:6], "Col2" = 1:6)
> df %>% mutate(Col3 = ifelse(Col1 == "a", "aa", Col1))
  Col1 Col2 Col3
1    a    1   aa
2    b    2    2
3    c    3    3
4    d    4    4
5    e    5    5
6    f    6    6

在上面的结果中,Col3 的第一个值被正确分配但没有休息。有人可以帮我理解正确的方法吗?

【问题讨论】:

  • 这可能是一个因素。转换为字符并重试。类似df %>% mutate(Col3 = ifelse(Col1 == "a", "aa", as.character(Col1)))
  • 与手头的问题无关,但使用管道运算符与问题无关。 mutate(df, Col = ifelse(Col1 == "a", "aa", Col1)) 会有相同的结果

标签: r dplyr


【解决方案1】:

两种方法:

ifelse 中使用as.character

library(dplyr)
df %>% mutate(Col3 = ifelse(Col1 == "a", "aa", as.character(Col1)))

或者在构造数据框时使用stringsAsFactors = FALSE

df = data.frame("Col1" = letters[1:6], "Col2" = 1:6, stringsAsFactors = FALSE)

【讨论】:

    猜你喜欢
    • 2021-05-28
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2020-02-09
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    相关资源
    最近更新 更多