我想使用语法代替" #N/A“而不是计算值0,但是"”没有显示在NetLogo 6.0.3中的csv文件中(这是⇒#N/A显示的,我想通过将"#N/A“与Excel中的数值数据混合计算平均值,但#N/A作为计算结果显示。如果"#N/A“显示为csv文件,则可以使用Excel进行计算。在NetLogo 6.0.1中,这是可能的。我应该如何处理NetLogo 6.0.3?
发布于 2018-06-15 15:08:50
这样做的“正确”方法是在excel中通过平均忽略N/A来处理它。这样,您可以将这些值保存为N/A,因此必须注意如何处理它们。您可以通过使用=AVERAGE(IF(ISNUMBER(A2:A5), A2:A5))之类的方法计算平均值,然后输入ctrl+shift+enter而不是仅仅输入。当然,这有点烦人。
要在网络徽标端解决这个问题,请报告值"\"#N/A\""而不是"#N/A"。这将保留引号时,您导入excel。或者,您可以输出除"#N/A"以外的几乎任何其他字符串。例如,报告"not-a-number"会使它成为一个字符串,甚至只是使用一个空字符串。您在excel中看到的引号实际上是字符串的一部分,而不仅仅是表示字段是字符串的指标。一般来说,CSV中的字段没有类型。Excel只是将它解释为一个数字。它将#N/A的确切字段视为特殊字段,因此以任何方式修改它(而不仅仅是在其周围添加引号)将阻止它以这种特殊的方式进行解释。
还值得注意的是,在NetLogo的早期版本中,这是一个bug (我假设您在这里使用BehaviorSpace;CSV扩展一直是这样工作的)。如果没有在字符串的开头和结尾有引号,就无法输出字符串。也就是说,字符串值本身就会有引号。这种行为是修复它的结果。现在,您可以输出真正的#N/A值,如果您愿意的话,这以前是没有办法的。
发布于 2018-06-14 21:05:45
也许这对你有用。假设您启用了csv扩展:
extensions [ csv ]您可以使用一个报告程序将列表(或列表列表)中的0值替换为字符串值" #NA“(如果需要,可以使用"N/A”,但对我来说,Excel中的值是NA)。
to-report replace-zeroes [ list_ ]
if list_ = [] [ report [] ]
let out map [ i ->
ifelse-value is-list? i
[ replace-zeroes i ]
[ ifelse-value ( i != 0 ) [ i ] [ "#NA" ] ]
] list_
report out
end作为快速检查:
to test
ca
; make fake list of lists for csv output
let fake n-values 3 [ i -> n-values 5 [ random 4 ] ]
; replace the 0 values with the NA values
let replaced replace-zeroes fake
; print both the base and 0-replaced lists
print fake
print replaced
; export to csv
csv:to-file "replaced_out.csv" replaced
reset-ticks
end观察员输出(随机):
[[0 0 2 2 0] [3 0 0 3 0] [2 3 2 3 1]]
[[#NA #NA 2 2 #NA] [3 #NA #NA 3 #NA] [2 3 2 3 1]]Excel输出:

https://stackoverflow.com/questions/50860195
复制相似问题