Mathematica:缺少值的列表上的操作

时间:2012-04-11 15:36:06

标签: list wolfram-mathematica operations

我尝试在一组列表上执行操作。例如:
列表: (1,1,3,3,4,4,4,4,4,4,5,5), (1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA), (1,1,1,1,NA,NA,NA,NA,NA,NA,NA,NA), (1,1,3,3,4,4,4,4,4,4,5,5)

然后我想要一个包含手段的列表。 均值[列表]无法正常运行,因为它不知道如何处理缺失值“NA”。 我的期望是: (1,1,5 / 3,7 / 3,3,4,4等)

有人如何忽略丢失或“文本”值?就像你在excel中运行这样的功能一样。 谢谢!

2 个答案:

答案 0 :(得分:2)

l = {{1, 1, 1, "NA", "NA"}, {2, 3, 4, 5, "NA"}}
Mean@# & /@ (Cases[#, Except@"NA"] & /@ l)

(*
-> {1, 7/2}
*)

答案 1 :(得分:2)

看起来你对矩阵列的意思感兴趣。如果您的数据数组是矩形的,您可以执行类似这样的操作

lst = {{1, 1, 1, "NA", "NA"}, {2, 3, 4, 5, "NA"}, {6, 7, 8, 9, 10}};
Mean /@ DeleteCases[Transpose[lst], a_ /; Not[NumericQ[a]], {-1}]

更简单的方法是用"NA"替换用于不可用元素的任何符号(例如lst中的Sequence[]):

Mean /@ (Transpose[lst] /. "NA" -> Sequence[])