Python 创建数据矩阵
我是一名数据科学家,正在使用一个文本文件,通过在每一个数据集的新行上打印参与者的ID,来指定我拥有多少个特定参与者的数据集。第二列计算不同参与者的数量,如下所示 a 1Python 创建数据矩阵,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
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