如何将时间数据列(名义)转换为一个单位(月)的连续数据?大家好。
在 JMP 中,我使用从 LIMS 系统提取的稳定性数据。 在进行分析时,我在 X 轴上有几个月的时间。 提取的数据有两种时间“格式”:以月为单位的时间(例如“M-12”或“M-36”)或以天为单位的时间(例如“EOS-968”或“EOS-1011”) )。 所有数据都位于同一列中。
我需要数据继续能够进行所需的分析。 对于以月为单位的时间,我通常只是通过执行“搜索和替换”来删除“M-” - 并将替换留空。 将几天变成几个月需要更多工作。
我自己最初的想法是首先删除“EOS-”部分,然后重新计算为几个月,但由于数据都位于同一列中,我发现很难将两个“数据集”分开,直到它们具有同一单位。
您对我如何更轻松地进行这种转变有什么好的想法吗? 也许需要一个小脚本?
任何帮助是极大的赞赏。
此致
亨丽埃特
质量和工艺工程回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?嗨戴尔。
非常感谢您的帮助。
BR 亨利埃特
回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?你好,贾莫。
效果非常好。 非常感谢您的帮助。
BR 亨利埃特
回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?我看到其他类似的想法,附件是我的(没有脚本)。
回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?您不需要将其存储在变量中。
下面的例子。 运行脚本并检查 MonthNumber 的公式:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
New Column("Time", Character, "Nominal", Set Values({"M-12", "M-36", "EOS-968", "EOS-1011"}))
);
dt << New Column("MonthNumber", Numeric, Continuous, Formula(
If(StartsWith(:Time, "M"),
Num(Word(2, :Time, "-"))
,
StartsWith(:Time, "EOS"),
Num(Word(2, :Time, "-"))/30
,
. //if starts with something else than "M" or "EOS"
);
));
然后您可以根据需要修改公式。
回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?你好。
非常感谢您的帮助。 我对 JMP 脚本编写完全陌生,所以也许您可以为我指明正确的方向,以完成缺失的逻辑。
对于“月份逻辑”,我只想删除“M-”部分,所以我认为 Dales 答案中的 Word 函数应该可以解决问题。
对于“天逻辑”,我想删除“EOS-”部分(使用Word函数),然后计算从天到月的数字部分。 也许是一个愚蠢的问题,但我可以只添加两行代码还是需要以某种方式将其存储在变量中?
谢谢 :)
回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?嗨戴尔。 感谢您的帮助。 据我所知,使用所描述的 Word 函数将为我提供一列连续数据(是的),但以两种不同的单位(天和月)表示。
关于如何将天数重新计算为几个月,但仅对数值以天为单位的行执行此操作,有什么想法吗?
BR 亨利埃特
回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?除了使用 Word() 之外,您还可以使用 Starts With 和 If 语句来确定应如何计算月份。
下面的脚本将添加占位符值 1(月)和 2(日)。 将它们替换为您的月份计算逻辑
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
New Column("Time", Character, "Nominal", Set Selected, Set Values({"M-12", "M-36", "EOS-968", "EOS-1011"}))
);
dt << New Column("MonthNumber", Numeric, Continuous, Formula(
If(StartsWith(:Time, "M"),
//month logic here
1
,
StartsWith(:Time, "EOS"),
//day logic here
2
,
. //if starts with something else than "M" or "EOS"
);
));

回复:如何将时间数据列(名义)转换为一个单位(月)的连续数据?“word”函数似乎可以解决问题 - 请参阅随附的示例文件。