r - 如何在某些特定列之前加上减号 (-)
问题描述
我有一个包含 2000 列的数据框,都是数字变量,我想将特定列 [其名称带有 X1COL,X2COL 的星号] 从正值转换为负值
前:
¦ 1COL1 ¦ 2COL ¦ 3COL ¦ X1COL ¦ 4COL ¦ X2COL ¦
+ + + + + +
后:
¦ 1COL1 ¦ 2COL ¦ 3COL ¦ X1COL ¦ 4COL ¦ X2COL ¦
+ + + - + -
解决方案
dplyr::mutate_at
允许在名称与正则表达式匹配的列上应用函数,例如:
library(dplyr)
df = data.frame(
X1COL = 1:3,
X2COL = 1:3,
X3COL = 1:3
)
df$`1COL` = 1:3
df$`2COL` = 1:3
df$`3COL` = 1:3
df
# X1COL X2COL X3COL 1COL 2COL 3COL
# 1 1 1 1 1 1 1
# 2 2 2 2 2 2 2
# 3 3 3 3 3 3 3
# to convert all columns like "X.COL" to negative
# which means X1COL, X2COL, X3COL, ...
df %>% mutate_at(vars(matches("X.COL")), `-`)
# X1COL X2COL X3COL 1COL 2COL 3COL
# 1 -1 -1 -1 1 1 1
# 2 -2 -2 -2 2 2 2
# 3 -3 -3 -3 3 3 3
# to convert all columns starts with "X1COL" or "X2COL" to negative
# which means X1COL.a, X2COL.b, X1COL.ab, X2COL.bc
df %>% mutate_at(vars(matches("^X(1|2)COL.*")), `-`)
# X1COL X2COL X3COL 1COL 2COL 3COL
# 1 -1 -1 1 1 1 1
# 2 -2 -2 2 2 2 2
# 3 -3 -3 3 3 3 3
推荐阅读
- javascript - 我可以在 Node.js 进程之间有效地传输 Tensorflow.js 张量吗?
- sql-server - SQL Server - 使用列数据类型作为用户输入构建表 - 如何验证用户输入
- javascript - 如何从 Date() 获取月份中的某天
- sockets - 以伪身份打开 telnet 连接
- python - 如何在 Scrapy 教程中抓取“下一页”?
- javascript - 如何使用返回的 JSON 对象来填充表,而不是填充您自己的数组
- flutter - 如何在颤动中流式传输本地文件修改
- node.js - Docker compose 和 Service 通信
- python - Python OOP 输出错误,有什么想法吗?
- javascript - 创建良好的拖放功能