Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建数据矩阵_Python_Bash_Awk - Fatal编程技术网

Python 创建数据矩阵

Python 创建数据矩阵,python,bash,awk,Python,Bash,Awk,我是一名数据科学家,正在使用一个文本文件,通过在每一个数据集的新行上打印参与者的ID,来指定我拥有多少个特定参与者的数据集。第二列计算不同参与者的数量,如下所示 a 1 a 1 a 1 b 2 b 2 C3 d 4 d 4 d 4 现在,我需要创建一个矩阵,其中每个参与者都有一列,并通过给它一个1对0的值来指定哪些行引用该参与者。我有超过2000名参与者,所以我不能手工完成这项工作,也不能写出所有的列号和打印内容,但必须创建一个规则 我的文件中的列数将是第2+2列最后一行中的数字(在示例中应为4

我是一名数据科学家,正在使用一个文本文件,通过在每一个数据集的新行上打印参与者的ID,来指定我拥有多少个特定参与者的数据集。第二列计算不同参与者的数量,如下所示

a 1
a 1
a 1
b 2
b 2
C3
d 4
d 4
d 4

现在,我需要创建一个矩阵,其中每个参与者都有一列,并通过给它一个1对0的值来指定哪些行引用该参与者。我有超过2000名参与者,所以我不能手工完成这项工作,也不能写出所有的列号和打印内容,但必须创建一个规则

我的文件中的列数将是第2+2列最后一行中的数字(在示例中应为4+2=6)。基本上,对于每一行,我需要在与(第2列中的值(参与者编号)+2)匹配的列中打印1。对于该行,所有其他列的值均为0。因此,对于行1,列(1+2=)3得到1,所有其他列得到0。对于第2行,列(1+2=)3得到1,所有其他列得到0,以此类推

这应该是这样的:

a 110 0 0
a 110 0 0
a 110 0 0
B20100
B20100
C301010
d 4 0 0 1
d 4 0 0 1
d 4 0 0 1

我希望我能提供我尝试过的代码,但我不知道从哪里开始


希望有人能帮忙。谢谢

awk
救援

$ awk 'NR==FNR{if(max<$2)max=$2; next} 
              {printf "%s %s", $1,$2; 
               for(i=1;i<=max;i++) printf " %s", i==$2; 
               print ""}' file{,}

a 1 1 0 0 0
a 1 1 0 0 0
a 1 1 0 0 0
b 2 0 1 0 0
b 2 0 1 0 0
c 3 0 0 1 0
d 4 0 0 0 1
d 4 0 0 0 1
d 4 0 0 0 1
$awk'NR==FNR{if(max