r - 使用后缀向数据框添加新列
问题描述
我想从另一列中减去一列,并使用第一列中的相应后缀创建一个新列。我有大约 50 列我可以“手动”完成如下...
df$new1 <- df$col_a1 - df$col_b1
df$new2 <- df$col_a2 - df$col_b2
创建一个为我完成这项工作的循环的最简单方法是什么?
解决方案
我们可以用grep
它来识别其中包含"a"
和"b"
的列并直接减去它们。
a_cols <- grep("col_a", names(df))
b_cols <- grep("col_b", names(df))
df[paste0("new", seq_along(a_cols))] <- df[a_cols] - df[b_cols]
df
# col_a1 col_a2 col_b1 col_b2 new1 new2
#1 10 15 1 5 9 10
#2 9 14 2 6 7 8
#3 8 13 3 7 5 6
#4 7 12 4 8 3 4
#5 6 11 5 9 1 2
#6 5 10 6 10 -1 0
数据
对此数据进行了测试
df <- data.frame(col_a1 = 10:5, col_a2 = 15:10, col_b1 = 1:6, col_b2 = 5:10)
推荐阅读
- javascript - 从索引中获取索引
- javascript - jquery .css() 方法在添加或删除任何字符之前不起作用
- python - 使用 matplotlib 绘制熊猫数据框,数据按年/月分组
- kubernetes - Kubernetes 中的网络策略问题
- c# - 在 Linux 上的同一台机器上运行多个实例时的 .Net Core 垃圾收集
- javascript - 瀑布图上的ChartJs x轴标签
- three.js - ThreeJS:剔除隐藏用户不可见的网格
- c - 使用 GDB 显示整个 int 数组
- java - 如何通过 kubernetes 服务名称执行 RESTFUL API
- r - 数据集中区域值的聚合