List 比较数据列表,根据条件创建新列表,Mathematica

List 比较数据列表,根据条件创建新列表,Mathematica,list,wolfram-mathematica,List,Wolfram Mathematica,我有大量的气候数据。两年多以来,每十分钟在不同的站点上进行一次测量。缺少一些测量值(每个站的测量值不同) 我想选择具有相同日期和时间的行,并将它们放入一个新表中开始比较 表格顺序为日期、时间、值、日期2、时间2、值2 {{ 20120806, 600, 253, 20120805, 1350, 565}, { 20120806, 610, 280, 20120805, 1400, 609}, { 20120806, 620, 306, 20120806, 600,

我有大量的气候数据。两年多以来,每十分钟在不同的站点上进行一次测量。缺少一些测量值(每个站的测量值不同)

我想选择具有相同日期和时间的行,并将它们放入一个新表中开始比较

表格顺序为日期、时间、值、日期2、时间2、值2

   {{ 20120806, 600, 253,  20120805, 1350, 565}, 
    { 20120806, 610, 280,  20120805, 1400, 609},
    { 20120806, 620, 306,  20120806, 600, 282}, 
    { 20120806, 630, 333,  20120806, 610, 305}, 
    { 20120806, 640, 353,  20120806, 620, 334}, 
    { 20120806, 650, 380,  20120806, 630, 364}, 
    { 20120806, 700, 406,  20120806, 640, 386}, 
    { 20120806, 710, 426,  20120806, 650, 409}}
结果应该是一个包含一个日期、时间和两个值的表

谢谢

现在可以用了

Select[mix, #[[2]] == #[[6]] && #[[3]] == #[[7]] &][[All, {1, 2, 3, 5,
6, 7, 8}]]
现在开始工作了

Select[mix, #[[2]] == #[[6]] && #[[3]] == #[[7]] &][[All, {1, 2, 3, 5,
6, 7, 8}]]
分为不同的列表:

{alist, blist} = Transpose /@ Partition[Transpose[list], 3];
从两个列表中拉出所有日期/时间值

alldates = 
  Union@Flatten[{list[[All, {1, 2}]], list[[All, {4, 5}]]}, 1];
函数,用于在缺少提供的日期/时间时将“缺少”添加到列表中:

addmissing[dlist_, list_] := 
  Module[{r}, r = Select[list, #[[1 ;; 2]] == dlist &];
    If[Length@r == 0, Append[dlist, "Missing"], First@r]] 

Flatten[{addmissing[#, alist], addmissing[#, blist]}, 1] & /@ 
  alldates // MatrixForm

分为不同的列表:

{alist, blist} = Transpose /@ Partition[Transpose[list], 3];
从两个列表中拉出所有日期/时间值

alldates = 
  Union@Flatten[{list[[All, {1, 2}]], list[[All, {4, 5}]]}, 1];
函数,用于在缺少提供的日期/时间时将“缺少”添加到列表中:

addmissing[dlist_, list_] := 
  Module[{r}, r = Select[list, #[[1 ;; 2]] == dlist &];
    If[Length@r == 0, Append[dlist, "Missing"], First@r]] 

Flatten[{addmissing[#, alist], addmissing[#, blist]}, 1] & /@ 
  alldates // MatrixForm

类似于
Select[list,#[[1]]==#[[4]]&[[All,{1,2,3,5,6}]]
(如果这不是您的意思,您应该为您的示例显示预期的输出)我刚刚尝试过。它只给我一个空的{}有没有可能附加第二个条件?{20120806,620,306,20120806,620,334},{20120806,630,333,20120806,630,364},{20120806,640,353,20120806,640,386}然后没有日期{20120806,600,253,282},{20120806,610,280,305},{20120806,620 306,334},{20120806,630,333,364,201806,386}还有可能将丢失的度量值作为丢失的标志返回吗?类似于
选择[list,#[[1]]==#[[4]]&[[All,{1,2,3,5,6}]]
(如果这不是您的意思,您应该为您的示例显示预期的输出)我刚刚尝试过。它只给我一个空的{}有没有可能附加第二个条件?{20120806,620,306,20120806,620,334},{20120806,630,333,20120806,630,364},{20120806,640,353,20120806,640,386}然后没有日期{20120806,600,253,282},{20120806,610,280,305},{20120806,620 306,334},{20120806,630,333,364,201806,386}是否可以将缺失的测量值作为缺失标志返回?示例数据只有6列。。可能缺少一些逗号?示例数据只有6列。。也许你遗漏了一些逗号?谢谢。太好了。现在我正试图得到每小时的平均值。谢谢你的帮助!我现在正在运行代码,需要几个小时。有什么建议吗?我有100000行要计算…谢谢。太好了。现在我正试图得到每小时的平均值。谢谢你的帮助!我现在正在运行代码,需要几个小时。有什么建议吗?我有100000行要计算。。。