如何在dplyr mutate中评估存储的列名

时间:2016-05-01 07:16:15

标签: r dplyr

我试图通过使用存储在数据框变量中的列引用从数据框列中提取值。也就是说,输入数据框:

  g1 g2 Group
1  a  d    g1
2  b  e    g1
3  c  f    g2

我想使用Group列创建一个新列,以指定来自g1g2的值。期望的输出:

  g1 g2 Group Group_val
1  a  d    g1         a
2  b  e    g1         b
3  c  f    g2         f

基于SO的其他答案,我正在尝试使用mutate的标准评估形式as.namequote或lazyeval的interp函数,但我还没想到在正确的调用中获取实际评估的列引用:

df <- data.frame("g1" = c('a', 'b' , 'c'), "g2" = c('d', 'e', 'f'), "Group"=c("g1", "g1", "g2"))
df <- mutate_(df, Group_val = as.name("Group"))

只需使用Group_val值填充Group。我还使用match使用正确的列索引填充Group_val(例如:1,1,2),但显然这只是同一问题的另一种形式。

我想用dplyr语法来解决这个问题,但如果有更容易的话,我会对非dplyr解决方案持开放态度。

0 个答案:

没有答案