【问题标题】:Renaming variable column in R重命名R中的变量列
【发布时间】:2015-07-25 12:56:26
【问题描述】:

所以这里是一个数据框

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)

【问题讨论】:

  • 您的函数中的brandBrand 是不同的。您是否正在寻找实现此a %&gt;% select(Brand, Month, 5) %&gt;% rename(TRP=TRP_C) %&gt;% summarise(total=sum(TRP)) 的函数
  • 或者我们是否需要 filter 基于brand' value and then get the sum(TRP) 的“品牌”行`
  • 会有很多变数的事情发生。就像您选择列后的第一个选项一样,我想将选择的任何 TRP 列重命名为通用名称,该名称将被进一步引用
  • 可能是aff &lt;- function(brand, TRP1){ a %&gt;% filter(Brand==brand) %&gt;% select(Brand, Month, TRP1) %&gt;% setNames(., c('Brand', 'Month', 'TRP')) %&gt;% summarise(Total=sum(TRP)) }
  • 感谢 Akrun 成功了!

标签: r dplyr


【解决方案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))}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-18
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2020-01-30
    • 2017-10-23
    相关资源
    最近更新 更多