2016-11-02 90 views
0

我想在data.frame上使用mutate(),我已經使用gather()創建一個變量,其值爲label()用於收集的variable。我搜索了Google和StackOverflow,但沒有找到合適的答案。我的研究使我認爲可能需要標準評估。如何用mutate()創建一個變量值等於給定變量的標籤的變量?

這裏是一個最小的可再現例如:

# Packages 
library(dplyr) 
library(Hmisc) 
library(tidyr) 
library(lazyeval) 

df <- mtcars %>% 
tbl_df() %>% 
slice(1) 

label(df$mpg) <- "Miles per gallon" 
label(df$cyl) <- "Cylinders" 

df %>% 
select(mpg, cyl) %>% 
gather(variable, value) %>% 
mutate_(.dots = interp(~attr(df$x, "label"), x = variable)) 

此代碼生成:

# A tibble: 2 × 3 
    variable value `attr(df$mpg, "label")` 
    <chr> <dbl>     <chr> 
1  mpg 21  Miles per gallon 
2  cyl  6  Miles per gallon 

這顯然是隻得到的標籤mpg

我的目標是有類似:

# A tibble: 2 × 3 
     variable value `attr(df$variable, "label")` 
     <chr> <dbl>     <chr> 
    1  mpg 21  Miles per gallon 
    2  cyl  6  Cylinders 

回答

1
這個

什麼?

df %>% 
    select(mpg, cyl) %>% 
    gather(variable, value) %>% 
    mutate(labels = label(df)[variable]) 

# A tibble: 2 × 3 
    variable value   labels 
    <chr> <dbl>   <chr> 
1  mpg 21 Miles per gallon 
2  cyl  6  Cylinders 
+0

哇。非常感謝。 #facepalm –

相關問題