【问题标题】:r - renamefrom function from crosswalkr returning 0 columnsr - 来自 crosswalkr 的 renamefrom 函数返回 0 列
【发布时间】:2019-07-23 01:24:47
【问题描述】:

我在使用 crosswalkr 包中的 renamefrom 函数时遇到问题。当我运行与文档中的内容不同的任何内容时,我没有得到任何列。

library(crosswalkr)


# documentation example
df <- data.frame(state = c('Kentucky','Tennessee','Virginia'),
                 fips = c(21,47,51),
                 region = c('South','South','South'))

cw <- data.frame(old_name = c('state','fips'),
                 new_name = c('stname','stfips'),
                 label = c('Full state name', 'FIPS code'))


df1 <- renamefrom(df, cw, old_name, new_name)


# when i have a different table
df <- data.frame(Item_ID = c(101163, 101165, 101167),
                 Type = c("Apple", "Pizza", "Drink"))

cw <- data.frame(old_name = c("Item_ID", "Type"),
                 new_name = c("New_ID", "Product"))

df1 <- renamefrom(df, cw, old_name, new_name)

【问题讨论】:

    标签: r rename


    【解决方案1】:

    问题与df 列名中的大写字符有关,并在crosswalkr 包的the v0.2.4 release 中得到修复。 (感谢作者@Benjamin Skinner 的及时回复!)

    老版本包的临时解决办法是设置case_ignore = FALSE:

    df2 <- renamefrom(df, cw, old_name, new_name,
        case_ignore = FALSE, drop_extra = FALSE)
    

    df3 <- renamefrom(df, cw, old_name, new_name,
        case_ignore = FALSE, drop_extra = TRUE)
    

    【讨论】:

    • 谢谢。似乎大小写功能无法正常工作,它要么需要是小写标题,要么是case_ignore = F
    • 您的 df2 基本上只是给出了相同的数据框,即使我的案例确实匹配。 df3 有效,但如果您没有列名,可能会导致您丢失信息。你应该添加df4 &lt;- renamefrom(df, cw, old_name, new_name, case_ignore = F, drop_extra = F)
    • @alexb523 你说得对。似乎case_ignore = T 结合drop_extra = F 不是一个很有帮助的解决方案。我已经用您建议的选项更新了替换 df2 的答案。
    【解决方案2】:

    这绝对是一个错误,但应该使用 GitHub 上的更新版本 (0.2.4) 修复。

    library(crosswalkr)
    
    ## setup data/crosswalk
    df <- data.frame(Item_ID = c(101163, 101165, 101167),
                     Type = c("Apple", "Pizza", "Drink"))
    
    cw <- data.frame(old_name = c("Item_ID", "Type"),
                     new_name = c("New_ID", "Product"))
    
    ## call command
    df1 <- renamefrom(df, cw, old_name, new_name)
    
    ## old
    df
    #>   Item_ID  Type
    #> 1  101163 Apple
    #> 2  101165 Pizza
    #> 3  101167 Drink
    
    ## new
    df1
    #>   New_ID Product
    #> 1 101163   Apple
    #> 2 101165   Pizza
    #> 3 101167   Drink
    

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2015-12-03
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多