【发布时间】:2017-01-26 07:41:50
【问题描述】:
我有一个类似于这个的data.frame:
library(tidyverse)
df <- data.frame(
var_1_a = 1:100,
var_1_b = 101:200,
var_two_a = 5:104,
var_two_b = 1:100
)
head(df)
var_1_a var_1_b var_two_a var_two_b
1 1 101 5 1
2 2 102 6 2
3 3 103 7 3
4 4 104 8 4
5 5 105 9 5
6 6 106 10 6
我想取同名变量的差异。因为这里只有两个,所以很容易做到:
df %>%
mutate(var_1_new = var_1_a - var_1_b,
var_two_new = var_two_a - var_two_b)
但在实际数据中,我有大约一百个。有什么比把它们都打出来更简单的方法呢?
PS - 如果它更容易,我有一个包含所有变量的列表(例如mylist <- list("var_1", "var_two")
【问题讨论】:
-
使用
mutate_而不是mutate,您可以在那里将表达式作为字符串提供,并使用您想要的数据名称执行所有gsub和paste。 -
对,但在这种情况下,我会有字符串向量,对吧?我不认为
mutate_可以处理这个问题,还是我错了? -
你是对的,这适用于多个参数,不适用于字符串向量。你可以建立一个列名和表达式的列表来评估和使用
do.call,但这可能不是最简单的方法。