【问题标题】:Issue with using Pipe for multiple ifelse functions将管道用于多个 ifelse 函数的问题
【发布时间】:2021-02-04 17:22:43
【问题描述】:

我正在使用 tidyverse 包并使用管道术语“%>%” 在多个功能上使用它之后,我似乎得到了一个错误(找不到功能)-.-^而且我没有在网上找到关于这个术语(“%>%

 #AB1 
  df_1$AB1<- ifelse(df_1$AB1==1 , 1 ,  
                        ifelse(df_1$AB1== 2, as.integer(-1),
                               ifelse(df_1$AB1== 3, 0,
                                      ifelse(df_1$AB1== 4,0,NA)))) %>%  
#AB2
  df_1$AB2<- ifelse(df_1$AB2==1 , 1 ,  
                     ifelse(df_1$AB2== 2, as.integer(-1),
                            ifelse(df_1$AB2== 3, 0,
                                   ifelse(df_1$AB2== 4,0,NA)))) 

我已尝试将数据框更改为 df_2 f.e.或删除第二个df_1$AB2&lt;-

#AB1 
  df_1$AB1<- ifelse(df_1$AB1==1 , 1 ,  
                        ifelse(df_1$AB1== 2, as.integer(-1),
                               ifelse(df_1$AB1== 3, 0,
                                      ifelse(df_1$AB1== 4,0,NA)))) %>%  
#AB2
  ifelse(df_1$AB2==1 , 1 ,  
                     ifelse(df_1$AB2== 2, as.integer(-1),
                            ifelse(df_1$AB2== 3, 0,
                                   ifelse(df_1$AB2== 4,0,NA))))

似乎我并没有真正得到管道的东西。我想让 R 一个接一个地运行这两个功能,但它似乎不起作用?有没有办法节省一些时间,因为每次我想以这种方式更改我的数据时,我想避免在许多不同的功能上使用“ctrl”+“r”。

最好的问候和 ty 看这个!

【问题讨论】:

    标签: r pipe tidyverse


    【解决方案1】:

    您应该首先将整个数据框确定为管道的数据。之后,你不应该为每个函数提供数据输入,管道会这样做,这就是管道的魔力。

    您可以使用 transmute 来转换您想要的列。 case_when() 是多个嵌套 ifelse() 的一个不错的、更简洁的替代方案。

    如果没有来自您的数据的示例(请发布 (dput(head(df_1)))以及您的尝试结果,很难确切说明应该做什么,但您可能会接受: 试试这个。

    
     #AB1 
      df_1 %>% transmute(AB1=case_when(
                            AB1==1 ~ 1 ,  
                            AB1== 2 ~ as.integer(-1),
                            AB1== 3 ~ 0,
                            AB1== 4 ~ 0,
                            TRUE ~ NA) %>%
    
             transmute(AB2=case_when(
                            AB2==2 ~ 1 ,  
                            AB2== 2 ~ as.integer(-1),
                            AB2== 3 ~ 0,
                            AB2== 4 ~ 0,
                            TRUE ~ NA)
    
    

    【讨论】:

    • 这在另一个数据集中对我有用.....但在我遇到问题的那个-.-我会检查如何发布数据样本,然后编辑帖子!用“case.when”提示提示!很多
    • 没关系,我又在打字时发现了很多错误!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2021-12-13
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多