如何选择数据集中的某些行?数学

时间:2015-03-20 11:41:06

标签: select wolfram-mathematica rows

我的问题可能很简单,但我是数学初学者。

我有一个数据集,让我们说:

  1. 列:1到10之间的数字
  2. 列标志
  3. 列其他标志。

    {{1,2,3,4,5,6,7,8,9,10},{d,T,4,/,G,T,W,O,P,M},{克,H,J,K,L,S,d,E,W,q}}

  4. 现在我想提取列1提供奇数的所有行。换句话说,我想创建一个新的数据集。

    我尝试使用SelectOddQ以及IF功能,但我完全不知道如何以正确的方式下订单!

2 个答案:

答案 0 :(得分:0)

抓住你可能会问的东西..

 (table = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ,
     Characters["abcdefghij"],
     Characters["ABCDEFGHIJ"]}) // MatrixForm

enter image description here

 table[[All, 1 ;; -1 ;; 2]] // MatrixForm

enter image description here

或者也许这样:

 Select[table, OddQ[#[[1]]] &]

{{1,2,3,4,5,6,7,8,9,10}}

答案 1 :(得分:0)

Mathematica中的约定与您在描述中使用的内容相反。 行是第一级子列表。

让我们拿原始数据

mytable = {{1,2,3,4,5,6,7,8,9,10},{d,t,4,"/",g,t,w,o,p,m},{g,h,j,k,l,s,d,e,w,q}}

正如你的建议,Select和OddQ可以做你想要的,但在你的桌子上,换位。所以我们先转换回来:

Transpose[Select[Transpose[mytable], OddQ[First[#]]& ]]

另一种方式: Mathematica功能命令MapThread可以在同步列表上工作。

DeleteCases[MapThread[If[OddQ[#1], {##}] &, mytable], Null]

MapThread的内部功能可以获得所谓的“行”的所有元素。作为变量(#1,#2等)。因此,如果测试失败,它将测试第一列并输出所有列或Null。封闭的DeleteCases抑制了不匹配的"行"。