【问题标题】:How can I manipulate/extract info from the following table in J如何从 J 中的下表中操作/提取信息
【发布时间】:2020-09-21 04:11:19
【问题描述】:
   ]data=:_3 ]\ 'Jack';23;178;'Rick';27;181;'Alice';41;178;'Mitch';31;184;'Paul';32;179
┌─────┬──┬───┐
│Jack │23│178│
├─────┼──┼───┤
│Rick │27│181│
├─────┼──┼───┤
│Alice│41│178│
├─────┼──┼───┤
│Mitch│31│184│
├─────┼──┼───┤
│Paul │32│179│
└─────┴──┴───┘

第一个字段是姓名,第二个字段是年龄,第三个字段是身高(厘米)。

【问题讨论】:

    标签: j


    【解决方案1】:

    如果您搜索 [j] table,您会发现 this question 可以说是您的重复,但很容易想象它的答案似乎不适用于您的数据,所以我调整了答案下面:

       NB. Select names
       0 {"1 data
    +----+----+-----+-----+----+
    |Jack|Rick|Alice|Mitch|Paul|
    +----+----+-----+-----+----+
       
       NB. test if name contains a 'k'
       +/"1 'k' e.~ 0 {::"1 data
    1 1 0 0 0
       
       NB. select rows where the name contains a 'k'
       (+/"1 'k' e.~ 0 {::"1 data) # data
    +----+--+---+
    |Jack|23|178|
    +----+--+---+
    |Rick|27|181|
    +----+--+---+
       (#~ [: +/"1 'k' e.~ 0&{::"1) data
    +----+--+---+
    |Jack|23|178|
    +----+--+---+
    |Rick|27|181|
    +----+--+---+
       
       NB. select names where height > 180
       > 0{"1 (#~ 180 < 2&{::"1) data
    Rick 
    Mitch
       
       NB. get average age and height
       (+/%#) 1 2 pick"1 data
    30.8 180
       
       NB. add a row
       is =: 4 : 'data =: data, (<x),y'
       years =: 1 : '<u'
       cm =: 1 : '<u'
       'Rebecca' is 24 years, 176 cm
    ... omitted ...
       'Gregory' is 37 years, 182 cm
    ... omitted ...
       load 'inverted'
       ,.&.> ifa data
    +-------+--+---+
    |Jack   |23|178|
    |Rick   |27|181|
    |Alice  |41|178|
    |Mitch  |31|184|
    |Paul   |32|179|
    |Rebecca|24|176|
    |Gregory|37|182|
    +-------+--+---+
    

    最后一点来自Inverted Tables,它有一些优点,可能最不重要的是它们的回声不那么吵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2020-04-11
      • 2020-08-02
      • 1970-01-01
      • 2019-08-31
      • 2011-09-25
      • 2023-03-28
      相关资源
      最近更新 更多