Statistics 避免和计算Mathematica中计算基本统计的非数值

Statistics 避免和计算Mathematica中计算基本统计的非数值,statistics,wolfram-mathematica,design-patterns,numerical,Statistics,Wolfram Mathematica,Design Patterns,Numerical,请考虑: dalist={{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {2.88`, 2.04`, 4.64`,0.56`, 4.92`, 2.06`, 3.46`, 2.68`, 2.72`,0.820}, {"Laura1", "Laura1", "Laura1", "Laura1", "Laura1", "Laura1", "Laura1", "Laura1", "Laura1","Laura1"},

请考虑:

dalist={{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 
       {2.88`, 2.04`, 4.64`,0.56`, 4.92`, 2.06`, 3.46`, 2.68`, 2.72`,0.820},   
       {"Laura1", "Laura1", "Laura1", "Laura1", "Laura1", 
       "Laura1", "Laura1", "Laura1", "Laura1","Laura1"}, 
       {"RIGHT", 0, 1, 15.1`, 0.36`, 505, 20.059375`,15.178125`, ".", "."}}
实际数据集约为6000行和147列。然而,上述情况反映了其内容。我想计算一些基本的统计数据,比如平均值。我的尝试:

Table[Mean@dalist[[colNO]], {colNO, 1, 4}]
我如何创建一个函数,例如:

避免使用非数值和

计算在每个列表中找到的非数值的数量


我还没有成功地找到正确的模式机制。

第一个观察结果:如果要跨行平均,可以使用Mean/@dalist。这里不需要表函数

尝试使用Cases,例如Mean/@Cases[,?NumericQ]&/@dalist

如果您想巧妙地从数据中删除没有数字元素的行(例如第三列),请尝试以下操作。它首先仅拾取包含一些数字元素的行,然后仅从这些行中获取数字元素

Mean /@ (Cases[#,_?NumericQ] & /@ (Cases[dalist, {___,_?NumericQ,___}]))
要计算非数值元素,可以使用类似的方法:

Length /@ (Cases[#,Except[_?NumericQ]] & /@ dalist)

这个答案有一个警告,我在没有安装Mathematica来检查语法的情况下键入了它。有些拼写错误可能会记住

回答问题的关键是函数:*NumberQ[expr]如果expr是一个数字,则为True,否则为False

要仅计算每个列表中数字元素的平均值,请执行以下操作:

Map[Function[lst, Mean[Select[lst, NumberQ]]], dalist]
Map[Function[lst, Length[Select[lst, Function[x, !NumberQ[x]]]]], dalist]
要计算每个列表中非数字元素的数量,请执行以下操作:

Map[Function[lst, Mean[Select[lst, NumberQ]]], dalist]
Map[Function[lst, Length[Select[lst, Function[x, !NumberQ[x]]]]], dalist]

这是Verbeia的答案的一个变种,你可以考虑。

假设这是一个矩形阵列,所有行的长度都相同,然后将d设置为行长度,该行长度可以通过尺寸找到:

也就是说,{number_of_的非数字平均数}对


平均值[{}]出现在没有要平均的数值的位置。可以使用DeleteCases将其从列表中删除,但结果将不再与dalist的行对齐。我认为最好使用如下内容:/。Mean[{}]->如果需要,不平均。

您的测试表将根据您提供的表格打印输出进行转换…@Sjoerd,感谢您的警惕。非常感谢!它是完美的。而且没有.nb!您也可以使用Select[,NumericQ]&,而不是CASE。对于Select,测试的使用是很自然的,在这种情况下,用例使用的模式必须转换为使用PatternTest@Sjoerd的测试。对于我来说,对于一些模糊的树脂,您的代码可以使用Select[,NumericQ]&@dalist[[2]]。在我的情况下,这个解决方案似乎是最佳的,谢谢。+ 1 @ SJORD -我只是相信自己在选择打字时比选择更多的情况:或者,对非数字项进行计数,计数[除了[Q.MICROICQ] ] /@ DististQualICQ通常比NoNBQ更好:考虑NoMyQu[Pi]和Noimiq[Pi]。谢谢。看起来在这个例子中,只使用了文字数字,所以我将它保留在NumberQ。