r-通过唯一的列ID拆分大数据帧,并打印到一个新的txt文件中



我从一个像这样的.txt文件中获得了一个大数据帧,其中我有>90000行,跨越~85个唯一的chr-ID:

>td style="text-align:left;">19973.501365[/tr>
region
1223 1223 12323 1223 112323 12323 12323 112323 112323 112323 12323 103 337500
1223 112323 12323

您可以列出所有唯一的ID。然后使用for循环对每个唯一的D进行迭代,然后打印每次迭代的结果。

list_ids <- c(‘list here’) 
for (i in unique(list_ids)){
print(subset(list_ids, chr==i))
}

好吧,事实证明这实际上是非常直接的使用python。以下是我最终做的事情。

cf = pd.read_csv('inputDataframe.txt', sep="  ", header = None, names = ["region", "chr", "midPos", "Nsites", "fst"])
grouped = df.groupby(df['chr'])
for name in df['chr'].unique():
temporary_df = grouped.get_group(name)
print(temporary_df)
temporary_df.to_csv(f'fst_{name}_raw.txt',sep='t')

因此,我取了如上所述结构的.txt文件,然后使用python脚本读取它,按chr ID分组,然后for循环遍历并获取每个唯一的chr ID,并将其打印到一个新的.txt文件中。这样做的一件事是,对于每个新的chr.txt文件,它都添加了一个新的第一列,其中包含主数据帧中的行号。我不知道如何在python中防止这种情况,但使用了一些unix脚本来修复它:

for i in fst_*.txt ;
do
name1=${i%.*};
name2=${name1%_*};
cut -f2,3,4,5,6 "$name1".txt > "$name2".txt
done

可能是一些刺耳的东西,但它完成了。。。

相关内容

  • 没有找到相关文章

最新更新