我正在研究蛋白质轨迹,我有一个很长的数据框。 (一栏 600.000 行的文件。
这是一个例子:
100
100
0
100
100
...
n=600.000
我希望每 3000 行拆分此数据,在旁边创建一个新列,如下例所示:
Col1 Col2 Col3 Col4 Col...200:
n=1 n=3001 n=6001 n=9001 ...
0 0 0 0 ...
0 0 0 0 ...
100 100 100 100 ...
... ... ... ... ...
n=3000 n=6000 n=9000 n=12000 n=600.000
n= 行号。
有什么方法可以在 R 或 bash 中做到这一点?
非常感谢您。
编辑:我在 python 中使用这个脚本来生成该列:
from decimal import *
i = 1
while(i <= 15):
output = open('cache/distances_'+str(i)+'.dat.results', 'w')
with open('cache/distances_medias_'+str(i)+'.dat', 'r') as f:
for line in f:
columns = line.split(' ')
if(Decimal(columns[0]) <= 2.5 and (Decimal(columnas[1]) > 120 and Decimal(columnas[1]) < 180)):
salida.write("100\n")
else:
salida.write("0\n")
salida.close()
i+=2
有什么方法可以修改脚本,当它到达第 3000 行时,从新的列开始?
请您参考如下方法:
我不确定我理解你的例子,但你应该能够使用拆分和粘贴的组合:
$ cat filetosplit
1
2
3
4
5
6
7
8
9
10
$ split filetosplit "split." -l 3 -d ; paste split*
1 4 7 10
2 5 8
3 6 9
split 命令会生成每行 3 行的文件(您可以修改为 3000)。粘贴会将它们放在一起。您可以使用 sed 添加带有列名和初始编号的标题。
