R数据整理:将数百个具有经常不同的列标题和结构的数据帧合并到一个主表中的有效方法是什么?

时间:2018-07-09 15:20:07

标签: r dataframe join merge pattern-matching

我有数百个数据框,每个数据框包含员工信息,例如年龄,性别,职位,DOB等。问题是,大多数文件具有不同的列标题和数据结构。

我正在尝试从每个文件中捕获尽可能多的可行信息,即不是全部,而是可以通过简单的列匹配或算法有效地捕获其中的70-80%。

此数据将合并到一个包含常用列(例如上面列出的列)的“主普查表”中,然后将其上载到SQL Server。

实现此目的的第一个想法是创建一个“主列”键,该键将一个列的多个变体映射到标准化的标题。例如,当包含输入文件的匹配列标题(“性别”,“性别”,“男/女”,“男/女”)时,将匹配“性别”列。

任何匹配的列都将添加到主表中,而在未找到匹配项的列中保留空白单元格。

实现此目标的最佳方法是什么?每个循环标题中的“ if”语句是否在循环中检查列转换键中的匹配项?是否有更合适的功能/软件包?

我正在努力将自己的头放在根据条件逻辑将整个列拉入新数据框中,而无需编写复杂的“ if,then”循环,同时还要确保数据结构被强制并且每个列都被标准化,即“ Sex”列只包含“男”和“女”,而不是“ M”,“ F”,“男孩”,“女孩”等的组合。

感谢任何帮助/投入/讨论。

如果有人想更好地了解我的意思,我可以花一些时间来添加示例数据。

R版本3.4.4

1 个答案:

答案 0 :(得分:0)

没有数据很难回答这个问题,但是我过去不得不做类似的事情,这就是我的做法。

  • 加载所有数据帧,找到所有变量(标题)值
  • 检查每个数据帧中变量的结构
  • 将这些数据存储在列表中,第一个条目包含标题的数据和数据类型

这应该产生所有帧的标题和数据类型的列表。

  • 直观地扫描这些数据后,定义所需的结果数据框的结构(这是“主普查表”)

此时您可以:

  • 加载每个数据帧,
  • 检查标题
  • 将变量更正为适当的格式,删除不必要的变量,为缺少的值添加必要的变量(可以使用rep(NA, each = nrow(df))或其他值)。
  • rbind()结果

如果您有更多详细信息,那么我可以更详细地回答,但是您最需要的是策略,然后编写算法(实际上可能有很多{{1} }调用)以应用它。