【问题标题】:r - ifelse with multiple columns (apply)r - ifelse 多列(应用)
【发布时间】:2018-04-09 17:07:12
【问题描述】:

我刚开始了解apply 世界,虽然我开始理解这个概念,但在应用程序上遇到了麻烦。

我有多个列,其中包含“Y”作为值,我想将其更改为列名的最后一个字母。

我想使用以下内容获取要应用该函数的列列表:

flaggs2015 <- grep("Flag", names(ItemStats_2015))

这是我想用 1 列做的一个例子:

ItemStats_2015$Item_Flag_A <- ifelse(ItemStats_2015$Item_Flag_A == "Y", str_sub(flaggs2015[1], -1, -1), NA)

显然,我希望同时在名称中包含 'Flag' 的任何列上执行此操作。

这里是示例数据:

Item_ID Item_Flag_A     dummy column    Item_Flag_B     Item_Flag_C
54434   Y               red                         
85068                   green                           
85070   Y               purple                          Y       
85072                   orange                          
85074   Y               red                         
85078   Y               green                           
85080   Y               purple          Y           
85086                   orange                          
85088                   red                         

【问题讨论】:

  • 能否请您包含您正在使用的数据的一小部分?

标签: r if-statement apply tidyverse


【解决方案1】:

我坚持这一点:

df <- data.frame(Item_ID = 1:3, Item_Flag_A = c("", "Y", ""), Dummy = 1:3, Item_Flag_B = c("Y", "", ""))
idx <- grep("Flag", names(df), value = T)

sapply(idx,  function(x) {
  df[, x] <<- ifelse(df[, x] == "Y", str_sub(x, -1, -1), NA)
})

【讨论】:

  • 这个解决方案如何使用具有多个条件的嵌套ifelse 语句工作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多