列中连续零的总和您好JMP社区,
我目前正在从事一个项目,该项目针对100个不同的时间值随机输出“ 0”或“ 1”。每次运行都对应一个“种子”。我需要以某种方式编写一些代码,该代码计算每个种子从某个时间点开始的连续0的数量,然后将其打印在数据表中。如果在特定时间评估的种子以1开始,则其总和为0。从那里,一旦找到所有这些连续的0的总和,我就需要找到它的平均值(出现1之前零的平均值)。下面附带的是我到目前为止的代码(它仅创建种子和时间值)。
谢谢,
凯尔
全部关闭(数据表,不保存);
//制作数据表
dt =新表格(“案例1”,
添加行(100),
新建列(“时间”,设置公式(序列(1,100))),
新列(“种子1”,数值,“连续”,格式(“最佳”,10),公式(随机整数(0、1)))
);
对于(i = 2,i <101,i ++,
dt << New Column(“ Seed” || Char(i),数值,连续,公式(随机整数(0,1))),
);
关于列中连续零的总和您如何希望将平均值计为输出?这是一种将其放入关联数组的方法:
seed_avg = Associative Array();
nseed = 100;
for(i = 1, i <= nseed, i++,
col_name = "Seed " || char(i);
col = Column(dt, col_name );
count_vec = [];
count = 0;
for(j = 1, j <= N Row(dt), j++,
if(col[j] == 0,
count++,
if(col[j] == 1 & count != 0,
count_vec = count_vec |/ count;
count = 0
);
)
);
Insert Into(seed_avg, col_name, mean(count_vec));
);
这可以很容易地调整为输出到表格或您喜欢的任何格式。
关于列中连续零的总和感谢您的详细回复-但是,我仍然遇到一些麻烦。据我了解,关联数组是一个关键... 例如,输出包含“ [“ Seed 1”] => 2.143“
由于每次运行都对应一个时间值,因此它不应该像“ [” Time 1“ => 2.143”]一样吗?
另外,我将如何使其完全适合表?
我尝试了dt << New Column(“ Mean”,Set Formula(seed_avg)); ,但这为我提供了该列中每个条目的完整值列表。
谢谢关于列中连续零的总和抱歉,我不了解您是要遍历行而不是向下逐列。 这是一种按时间点获取结果并将结果保存在新列中的方法。
dt << New Column("Average", numeric);
nseed = 100;
for(i = 1, i <= N Row(dt), i++,
count_vec = [];
count = 0;
for(j = 1, j <= nseed, j++,
col = Column(dt, "Seed " || char(j) );
if(col[i] == 0,
count++,
if(col[j] == 1 & count != 0,
count_vec = count_vec |/ count;
count = 0
);
)
);
dt:Average[i] = mean(count_vec);
);