r - 如何根据第三列的值置换 tibble 的两列?
问题描述
我有以下小标题:
library(dplyr)
df <- tibble(v1 = c(1,-1,1), min = c(2,3,4), max = c(4,5,6))
这给了我:
# A tibble: 3 x 3
v1 min max
<dbl> <dbl> <dbl>
1 1 2 4
2 -1 3 5
3 1 4 6
如果值为is ,我想置换min
with的值。这就是第二行的情况(我想得到 min=5 和 max=3)。我想使用. 我知道我必须使用第三个临时变量,但我不能在.max
v1
-1
dplyr
dplyr
解决方案
一个更简单的选择base R
是基于“v1”创建一个逻辑索引,然后通过翻转赋值rhs
和lhs
表达式中的列来赋值
i1 <- df$v1 == -1
df[i1, c("min", "max")] <- df[i1, c("max", "min")]
df
# A tibble: 3 x 3
# v1 min max
# <dbl> <dbl> <dbl>
#1 1 2 4
#2 -1 5 3
#3 1 4 6
使用的选项filter/bind_rows
是
df %>%
filter(v1 == -1) %>%
rename_all(~ c("v1", "max", "min")) %>%
bind_rows(df %>%
filter(v1 != -1))
推荐阅读
- django - 之前通过 Ajax 渲染模板后提交时 CSRF 验证失败
- javascript - 在 Zeit 上使用 gatsby-source-buttercms 部署 gatsby 应用程序时出错
- sql-server - TSQL 将行分隔为后续操作行
- python-3.x - 如何使用python脚本在主动打开的浏览器中查找选项卡名称列表
- javascript - 占位符图像没有正确加载卡片 [ReactJs]
- javascript - 如何限制分页中显示的页面数量
- c# - 如果不在构造函数中,如何验证数据?
- node.js - API 发布 x-www-form-urlencoded 数据但在 json 上失败
- xml - XSLT 通用将结构值类型转换为单值字符串
- c# - 如何使用 sizeof 保留易重构?