我想从另一列中减去一列,并使用第一列中的相应后缀创建一个新列。我有大约50列我可以按以下方式“手动”进行操作...
df $ new1
df $ new2
创建最适合我的循环的最简单方法是什么?
我们可以使用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)