在这个关于“JMP 和 Excel – 永无止境的故事?”的博客系列中 我谈到了导入电子表格数据,并描述了从电子表格(或有时还有其他来源)导入数据时的前几个典型挑战。 这次我将重点介绍日期和日期格式,这是我在 中列出的第三个主题第2部分.
Day 和 Month 会被错误解释
当您将诸如“10/11/2012”之类的日期粘贴到数据表中时,JMP 可能需要解决 m/d/y 和 d/m/y 格式之间的歧义:
- “10/11/2012”是十月还是十一月? 如果您为列分配日期格式,则不会产生歧义。 但是:Excel 中的特殊格式或某些自定义格式(例如带有 * 前缀的格式)并不总能被识别
Excel formatExcel formatExcel formatExcel formatExcel formatExcel格式
- JMP 的默认猜测是 m/d/y,除非第一个粘贴值只能是 ad/m/y 日期! 要解决此问题,您要么预先指定正确的日期格式,要么在第一行中使用不同的虚拟日期值,例如 13/1/99。
- 所有更改和导入都基于这样一个事实,即与您选择的格式不匹配的值将被设置为缺失。 您将收到一个 JMP 警告。
- 在某些情况下,JMP 会为列选择一种字符格式。 您可以稍后将字符列更改为数字数据列。 让我们更深入地讨论一下:Column info 允许您更改日期格式。 您可以设置输入和输出格式。 确保你做对了:
Changing Date formats in JMP Column Info with Input and output formatChanging Date formats in JMP Column Info with Input and output formatChanging Date formats in JMP Column Info with Input and output formatChanging Date formats in JMP Column Info with Input and output formatChanging Date formats in JMP Column Info with Input and output format使用输入和输出格式更改 JMP 列信息中的日期格式)
- 请注意:在 Windows 和 Macintosh 之间,小数点后的位数和导入数据的日期格式可能不同。 例如,“10/25/2012”在 Macintosh 上可能会被格式化为“25Oct2012”。 在 Macintosh 上,列可能作为字符列导入,但在 Windows 上则不然。
- 如前所述,并非所有格式都可以识别,因此显示的导入数据可能与预期不同。 然而,完整的数据将在内存中,因此显示的变化将显示完整的信息。 如果未预先指定,您也可以在此处将日期格式更改为时间或持续时间格式,反之亦然
- 在某些情况下,最简单的方法是将 JMP 中的显示语言首选项设置更改为英语或德语。 你可以看到我之前的“如何”博文. 但这并不总是能解决所有情况。
无法识别日期格式
有时日期格式难以识别,JMP 会将它们作为字符导入。 示例可以自定义日期,包括日历周、季度等。 在这种情况下,您可能需要使用公式创建新列以提取特定信息以供进一步分析。 我想举个例子:

可以使用公式编辑器或 JMP 脚本语言将“KW14/2016”转换为两个新列“weekNr”和“year”。 公式编辑器以及 WORD 或其他字符函数是这些任务的好朋友,当然您也可以使用 REGEX,通常这需要熟悉此功能。 您可以使用此脚本(或公式编辑器中的模拟)简单地提取年份:
Num(Word(2, :MyDate, "/"))
或者
Num(Right(:MyDate, 4))
还有其他你可能会觉得有价值的方式,我把它留给你的喜好。
定义您的日、月和其他日期信息
传输作为字符导入的日期数据的另一种方法是使用 Brady Brady 的“数据表工具“ 加入。 在那里你将有一个很好的功能来处理这些情况。 让我们简要地看一下它,您可以在 Brady 本身的描述和博客中找到更多信息。 假设您有此数据表中的数据:

日期列是字符格式,因为 JMP 不知道该格式。 因此,更改数据和输入格式将不会在此处起作用,从而导致缺失值(无论您使用的是哪种语言设置)。在加载项菜单中选择“数据表工具”=>“特殊公式列”=>“自定义日期公式编写器”,然后执行以下操作:
- 选择要更改的表和列
- 定义分隔符,这里是下划线,它会复制到字符串中的其他地方(注意你可以选择任何你喜欢的交互方式——我个人最喜欢的)
- 指定年份的数字格式(例如,如果您有两位数的年份,则很重要)
- 将每个分数映射到它应该代表的内容(天、分钟、年……)
- 月份的重要格式是它的格式(数字、3 个字母或全名)
- 告诉输出格式应该是什么,然后按“构建公式列”。
- 结果是新公式列“NewDate”中的干净数字日期数据,您可以在其中查看公式并了解如何手动完成转换

这已经在很多情况下帮助了我。 虽然不是全部。 首先,它不适用于德语中 October 的本地名称。 其次,我有一个案例,数据库中的数据没有被正确读入,结果导入后已经缺少值。 在那里我们可以解决使用我已经提到的语言设置更改。 可能也有可能检查数据库连接以及它如何获取数据,但是如果这不是您的机器,您可以轻松地与开发人员和 IT 共享,那么这需要深入研究并且很难 
接下来是什么?
我希望这将是对您的工作有用的信息,并且我很高兴收到您关于这些提示如何为您工作的反馈。 在接下来的两篇(也可能是最后一篇)JMP 和 Excel 系列博文中,我将讨论要导入的数据中的数据质量问题。 特别是我应该从哪里开始校对和编辑数据——在 Excel 中或导入后。 JMP 还是 JMP,这是个问题;)
此外,我还将讨论将数据导入 JMP 的最佳实践以及有助于参考的更多资源。
你的经验是什么? 你面临什么挑战?
我很高兴向您学习,看看您如何克服这些挑战,以及我的建议是否能帮助您减少导入(电子表格)数据的挑战。
希望修复 JMP 中 M/D/Y 与 D/M/Y 的导入问题:
CSV 导入强制 MDY 或 DMY 日期格式