【问题标题】:How do apply fuzzy lookup in r data frames如何在 r 数据帧中应用模糊查找
【发布时间】:2020-03-04 13:57:39
【问题描述】:

我有 2 个数据框。 1. df1 包含来自 OLAP 多维数据集的带有非结构化标题的销售数据。

df1 <- data.frame("[Time].[Fiscal Year].[Fiscal Year].[MEMBER_CAPTION]"= c("FY18","FY19","FY20"), "[Measures].[USD]"=c(100,200,300))
names(df1) <- c("[Time].[Fiscal Year].[Fiscal Year].[MEMBER_CAPTION]","[Measures].[USD]")
  1. df2 包含非结构化标头列表和相应的已清理标头。
df2<- data.frame("RawHeaderName"=c("[Time].[Fiscal Year]","[Measures].[USD]"),"ReportDisplayName"=c("FiscalYear","USD"))

我的要求是当 df2$RawHeaderName 值与 df1 标头匹配(模糊匹配)时,我需要将 df1 标头替换为 df2$ReportDisplayName 值。最终结果应该如下所示。

FinalOutput <- data.frame("FiscalYear" =c("FY18","FY19","FY20"),"USD"=c(100,200,300))

请帮我解决问题。 我已经尝试过 library("fuzzyjoin"),library("dplyr") 库,但没有运气。

【问题讨论】:

    标签: r


    【解决方案1】:

    我认为您只是在寻找 names(df1) &lt;- c('Fiscal Year', 'USD')df1 修改为:

      Fiscal Year USD
    1        FY18 100
    2        FY19 200
    3        FY20 300
    

    【讨论】:

    • 但是当我的需求是动态的时候如何处理呢?
    • 无法让这个工作。暂时没时间了。
    【解决方案2】:

    经过一段时间的加速,下面的代码仅在存在匹配条件时才帮助我解决 50% 的问题。模糊匹配还需要探索。

    库(“dplyr”)

    df1 <- data.frame("[Time].[Fiscal Year].[Fiscal Year].[MEMBER_CAPTION]"= c("FY18","FY19","FY20"), "[Measures].[USD]"=c(100,200,300))
    names(df1) <- c("[Time].[Fiscal Year].[Fiscal Year].[MEMBER_CAPTION]","[Measures].[USD]")
    
    
    df2<- data.frame("RawHeaderName"=c("[Time].[Fiscal Year].[Fiscal Year].[MEMBER_CAPTION]","[Measures].[USD]"),"ReportDisplayName"=c("FiscalYear","USD"))
    
    
    Extract_Headers <- (names(df1))
    Extract_Headers <- data.frame("Headers"=as.character(Extract_Headers))
    df2$RawHeaderName <- as.character(df2$RawHeaderName)
    df2$ReportDisplayName <- as.character(df2$ReportDisplayName)
    Cleansed_Headers <- Extract_Headers %>% inner_join (df2, by =c("Headers"="RawHeaderName"))
    names(df1)<- Cleansed_Headers$ReportDisplay
    

    【讨论】:

      猜你喜欢
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      相关资源
      最近更新 更多