在R中重命名变量列

时间:2015-07-25 12:56:27

标签: r dplyr

所以这是一个数据框

a<-data.frame(Brand=c("X","Y","Z","d"),Month=1:4,TRP_A=6:9,TRP_B=7:10,TRP_C=10:7)

在自定义函数中,我需要选择一个TRP_A,TRP_B或TRP_C,这将是函数中的参数TRP

因此,假设我调用该函数并且作为参数TRP我输入5,因此将选择列TRP_C。但它将命名为TRP_C,我需要进一步参考,例如如果我想要总和列。

我需要将TRP_C重命名为通用名称,例如Target,因为下次我可能会使用TPR_B左右......但我不知道怎么做,因为重命名功能需要传递原点名称。

    aff<-function(brand,TRP) {

      a<-a%>%select(Brand,Month,TRP)

      total<-a%>%summarise(total=sum(TRP))
      total
    }

aff("X",5)

1 个答案:

答案 0 :(得分:1)

尝试

 aff <- function(brand, TRP1){ 
        a %>%
         filter(Brand==brand) %>%
         select(Brand, Month, TRP1) %>% 
         setNames(., c('Brand', 'Month', 'TRP')) %>% 
         summarise(Total=sum(TRP)) }

或者我们可以将setNames行更改为

aff <- function(brand, TRP1){ 
              a %>%
              filter(Brand==brand) %>%
              select(Brand, Month, TRP1) %>% 
              setNames(., sub('\\_.*', '', names(.))) %>%
              summarise(Total = sum(TRP))}