powershell 对数据的行和列按需进行转换

来源:互联网 发布:程序员人才网 编辑:程序博客网 时间:2024/05/22 10:43

以上是原始数据,原始数据生成代码:

 $l1s=new-object  collections.arraylist
$l1=new-object psobject|select id,时间,地区,价格
$l1.id=1
$l1.时间="2001"
$l1.地区="上海"
$l1.价格=5
$l1s.add($l1)
$l1=new-object psobject|select id,时间,地区,价格
$l1.id=2
$l1.时间="2001"
$l1.地区="山东"
$l1.价格=6
$l1s.add($l1)
$l1=new-object psobject|select id,时间,地区,价格
$l1.id=3
$l1.时间="2002"
$l1.地区="上海"
$l1.价格=8
$l1s.add($l1)
$l1=new-object psobject|select id,时间,地区,价格
$l1.id=4
$l1.时间="2002"
$l1.地区="山东"
$l1.价格=9
$l1s.add($l1)

 

然后,经过一段代码,做如图的转换。

$l2s=new-object  collections.arraylist
$p=@()
$p+=(,"时间")
$l1s|group 地区|%{$p+=(,$_.name)}
$l1s|group 时间|%{
$l2=new-object psobject|select $p
$l2.时间=$_.name
for($i=1;$i -lt $p.Count;$i++){
$n=($p[$i])
$l2.$n=($l1s|?{$_.时间 -eq $l2.时间 -and $_.地区 -eq $n}).价格
}
$l2s.add($l2)
}