【发布时间】:2018-09-19 09:51:30
【问题描述】:
我已经使用 full.joint 来合并两个表:
fsts = full_join(fstvarcal, fst, by = "SNP")
这具有将两个数据集的值的第一行分组的效果,然后是只有第一个数据集的值的行(以及第二个数据集的 NA),然后是有两个数据集的值的行。仅适用于第二个数据集的值(以及第一个数据集的 NA)。
我现在正尝试按自然顺序。
在 bash 中寻找 sort -V -k1 的等价物。
我已经试过了:
library(naturalsort);
fstordered = fsts[naturalorder(fsts$SNP),]
这可行,但速度很慢。
有更快的方法吗?或者在不丢失自然顺序的情况下合并两个数据集?
我有:
SNP fst
scaffold_0 0.186473
scaffold_9 0.186475
scaffold_10 0.186472
scaffold_11 0.186470
scaffold_99 0.186420
scaffold_100 0.186440
和
SNP fstvarcal
scaffold_0 0.186472
scaffold_8 0.186475
scaffold_20 0.186477
scaffold_21 0.186440
scaffold_999 0.186450
scaffold_1000 0.186420
和wan结合成
SNP fstvarcal fst
scaffold_0 0.186472 0.186473
scaffold_8 0.186475 NA
scaffold_9 NA 0.186475
scaffold_10 NA 0.186472
scaffold_11 NA 0.186470
scaffold_20 0.186477 NA
scaffold_21 0.186440 NA
scaffold_99 NA 0.186420
scaffold_100 NA 0.186440
scaffold_999 0.186450 NA
scaffold_1000 0.186420 NA
【问题讨论】:
-
请将此问题设为可重复的问题,参考:stackoverflow.com/questions/5963269、stackoverflow.com/help/mcve 和 stackoverflow.com/tags/r/info。初学者:列出所有正在使用的非基础包(
dplyr?);包含少量消耗数据,不作为图片,我不会从图片转录,建议dput(head(x));包括与问题相关的其他函数的代码,例如naturalorder。 -
您能否提供
fsts的代表性样本数据。据我所知,fsts将具有相同的字母顺序和自然顺序。 -
k 刚刚更新了信息。该表从scaffold_0_14500 到scaffold_3015_5000(其中有BP.x 和BP.y 的数据)然后跳回到scaffold_0_1000 并上升到scaffold_3015_5500(其中只有BP.y 的数据)。