r - 将管道用于多个 ifelse 函数的问题
问题描述
我正在使用 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 fe 或删除第二个df_1$AB2<-
#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 看这个!
解决方案
您应该首先将整个数据框确定为管道的数据。之后,您不应该为每个函数提供数据输入,管道会这样做,这就是管道的魔力。
比你可以使用 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)
推荐阅读
- javascript - 输出包含某个字符串的变量名
- python - python将字典转换为数据框
- pandas - 如何更改我的特征重要性数据框以包含实际的分类变量名称而不是一次性编码?
- javascript - 获取 JSON 数据,按属性分组,并使用多个聚合函数进行聚合
- c# - 控制器操作如何映射到引擎盖下的路由?
- java - 如何使用 Micrometer 正确跟踪 Hibernate 指标?
- slack - Slack API:选择对话成员,同时过滤掉没有 n+1 的机器人
- excel - 如何获取到特定日期的数据累积总和?
- triangulation - 有人可以帮我找到一些与ns2中的delaunay三角剖分模拟相关的链接吗?
- python - Sphinx 文档 - 如何隐藏从父类函数继承的函数参数?