将列子集或单元格范围从一个表复制到另一个表我有两个数据表。 table2 中的某些列与 table1 中的列相同。
我不是要将相同列的数据从 table2 复制到 table1。
这当然意味着 (1) table1 将使用 table2 中的数字或行进行扩展,并且 (2) table1 中将缺少数据。 没关系。
我的问题是如何将数据从 table2 复制到 table1。
例如 - 两个表都有“NAME”列。 表 1 有 1000 行,表 2 有 2000 行。
结果将是:table1 有 3000 行,table1 上的“NAME”将是两个 NAME 列的“串联”。 table1 中的其他列将有 2000 个缺失/空数据。
顺便说一句,实际上,表格要大得多,并且有 10-20 个相同的列(大约 100 个)。 一旦弄清楚基本功能,我就会处理它。 我提到它是为了防止这种尺寸出现问题。
非常感谢
回复:将列子集或单元格范围从一个表复制到另一个表这个例子对我不起作用。
但是,没关系,我有了这个想法,它似乎可以在几个输入文件上运行测试。
似乎我不必要地使事情复杂化,而直截了当的方法就在我的眼皮底下。
谢谢你的耐心
回复:将列子集或单元格范围从一个表复制到另一个表
@RonB写道:
是的,我明白这一点。 但是我正在处理的数据结构还需要复制 Big Class 中在 Fitness 中没有相同名称的列。 即,这些列将作为新列“垂直连接”到输出表。 这些列将以缺失数据(与 Fitness 中的行一样多)开始,然后是来自 Big Class 的数据。
这与开始时简单地将两个表连接在一起有何不同? 这样做你最终会得到一个包含两个表中所有行和所有列的表。 对于最初没有这些列的行,两个表中没有匹配名称的列将为空。
让我们停止抽象地谈论,更具体一点。 这里有两个表:
表格1
| A |
乙 |
C |
| 1个 |
1个 |
1个 |
| 2个 |
2个 |
2个 |
| 3个 |
3个 |
3个 |
表2
| A |
乙 |
丁 |
| 4个 |
4个 |
4个 |
| 5个 |
5个 |
5个 |
| 6个 |
6个 |
6个
|
在这两个表上使用 Tables->Concatenate,您将得到这个表。
表3
| A |
乙 |
C |
丁 |
| 1个 |
1个 |
1个
|
• |
| 2个 |
2个 |
2个 |
• |
| 3个 |
3个 |
3个 |
• |
| 4个 |
4个 |
• |
4个 |
| 5个 |
5个 |
• |
5个 |
| 6个 |
6个 |
• |
6个 |
我在上面解释您的描述的方式让我认为这就是您想要的表格。 如果不是,很抱歉我误解了您的要求。
回复:将列子集或单元格范围从一个表复制到另一个表是的,我明白这一点。 但是我正在处理的数据结构还需要复制 Big Class 中在 Fitness 中没有相同名称的列。 即,这些列将作为新列“垂直连接”到输出表。 这些列将以缺失数据(与 Fitness 中的行一样多)开始,然后是来自 Big Class 的数据。
我想我可以通过首先向 Fitness 添加新列,其中包含 Big Class 中所有不同的名称来做到这一点。 比使用您向我展示的相同方法,仅使用这些列对 Big Class 进行子集化并进行连接。
这是很多工作,但我看不出有其他方法可以处理我拥有的大量表和列。
再次感谢
回复:将列子集或单元格范围从一个表复制到另一个表
@RonB写道:
现在我只需要弄清楚如何复制不匹配的列,但我认为我可以管理。
来自哪个表的非匹配列? 上面的示例保留了 Fitness 表中的所有列,并仅连接 Big Class 中具有相同名称的列。 它通过仅对 Big Class 进行子集化以获取具有相同名称的列,然后将其连接到 Fitness(它仍然具有其所有列)来实现这一点。不应该有任何工作来保留不匹配的列。
回复:将列子集或单元格范围从一个表复制到另一个表工作了。 非常感谢。 现在我只需要弄清楚如何复制不匹配的列,但我认为我可以管理。
回复:将列子集或单元格范围从一个表复制到另一个表我会试一试并报告(由于不相关的情况可能需要一段时间)。
许多 tx
回复:将列子集或单元格范围从一个表复制到另一个表
@RonB写道:
如果我理解你的话,我需要用列 ea 创建 table2.1,而不是将它们重新排序为 ae,然后将 table2.1 连接到 table1?
您已经知道了,但无需重新排序列。 Tables->Concatenate 匹配列名,而不是位置。
子集依赖于列选择,因此您需要选择两个表之间共有的列。 但这很容易,因为您只需从 table1 中获取所有列名,然后针对 table2 选择整个列表。 任何不存在的都会被忽略。
下面是一个使用两个示例数据表的示例。
bc = Open( "$SAMPLE_DATA\Big Class.jmp" );
fit = Open( "$SAMPLE_DATA\Fitness.jmp" );
fit_cols = fit << get column names;
bc << select columns( fit_cols );
sub_bc = bc << Subset( All rows, Selected columns only( 1 ) );
fit << Concatenate( sub_bc );
//if you don't want a new table you can use "Append to first table"
fit << Concatenate( sub_bc, Append to first table );
回复:将列子集或单元格范围从一个表复制到另一个表好的。 很好的鼓励。
表 1 有列 abcde,表 2 有列 xyezau v。 我只想将表 2 中的列 ea 连接到表 1。 你会怎么做?
如果我理解你的话,我需要用列 ea 创建 table2.1,而不是将它们重新排序为 ae,然后将 table2.1 连接到 table1?
回复:将列子集或单元格范围从一个表复制到另一个表不要放弃内置函数,比如 Tables->Concatenate 这么快。
如果您只想在两个表之间具有相同名称的列,则可以使用 Tables->Subset 创建两个表,其中仅包含每个表中的那些列,然后连接这两个表。
回复:将列子集或单元格范围从一个表复制到另一个表再次感谢。 不幸的是,由于我的数据集的怪异性质,连接不会起作用。
我只需要连接某些列,忽略测试。
我总是可以遍历源表中的所有行并在目标表中插入行,而不是一一设置列值。 但我担心它会占用 CPU - 我的脚本将处理 100 多个文件,其中包含数十列和数千行。 此外,这不是一个优雅的解决方案,尽管可能是不可避免的。
我会简化我的问题。
我可以做那样的事吗?
Column(dt, i)[from,to] = 值列表或矩阵
谢谢你的耐心,
回复:将列子集或单元格范围从一个表复制到另一个表串联不会忽略不匹配的列。下面是一个使用 Big Class 和 Big Class Families 的样本数据表。请注意,Big Class 数据表最终将包含 Big Class Families 拥有的所有列,这些列不在原始 Big Class 数据表中。
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = Open( "$SAMPLE_DATA/big class families.jmp" );
dt1 << concatenate( dt2, Append to First Table( 1 ) );
回复:将列子集或单元格范围从一个表复制到另一个表谢谢。
连接函数不会执行,因为我只需要对两个表中相同的列执行此操作,而跳过所有其他列。
我尝试将源列数据存储在矩阵/列表中,而不是使用订阅 [I,j] 在目标列(第二个表)上设置值,但我想我遗漏了一些东西。
回复:将列子集或单元格范围从一个表复制到另一个表您可以让 JMP 为您生成代码。
跑过
表==>连接
交互式地,然后在新数据表中,进入数据表左侧的表面板并右键单击“源”条目,然后选择“编辑”。在那里您将看到将文件连接在一起所需的 JSL。
JSL基本上是
dt1=data table(<YOUR first="" table="">);
dt2=data table(<YOUR second="" table="">);
dt1 = dt1 << concatenate( dt2, Append to First Table(1));</YOUR></YOUR>
回复:将列子集或单元格范围从一个表复制到另一个表谢谢。 我确实考虑过。 但是,我需要使用脚本来完成,因为我有很多这样的文件,并且列的顺序从一个变为一个。
我想找出一些可以做到这一点的代码。
谢谢
回复:将列子集或单元格范围从一个表复制到另一个表JMP 将使用
表==>连接
连接时它将按列名排列列。对于未出现在一个或另一个数据表中的列,缺失值将自动添加到行中。
Concatenation Platform 保留匹配列的名称,只是为不在基础数据表中的列添加新的列名称。
有关文档,请参阅:
帮助==>书籍==>使用JMP