使用R. Base包,dplyr或data.table都可以使用.我的数据是~1000行×20列.我期待大约300个重复.
我想做类似以下的事情,但有一个改动:
我想找到,不是完全重复的行,而是在两列中重复的行.例如,给定此输入表:
File T.N ID Col1 Col2
BAI.txt T 1 sdaf eiri
BAJ.txt N 2 fdd fds
BBK.txt T 1 ter ase
BCD.txt N 1 twe ase
Run Code Online (Sandbox Code Playgroud)
如果我只想在TN&ID中找到重复项,我最终会得到下表:
File T.N ID Col1 Col2
BAI.txt T 1 sdaf eiri
BBK.txt T 1 ter ase
Run Code Online (Sandbox Code Playgroud) 我在R中有一个data.frame,为简单起见,我想要分隔一列.它看起来像这样:
V1
Value_is_the_best_one
This_is_the_prettiest_thing_I've_ever_seen
Here_is_the_next_example_of_what_I_want
Run Code Online (Sandbox Code Playgroud)
我的真实数据非常大(数百万行),所以我想使用tidyr的独立函数(因为它的速度非常快)来分离出前几个实例.我希望结果如下:
V1 V2 V3 V4
Value is the best_one
This is the prettiest_thing_I've_ever_seen
Here is the next_example_of_what_I_want
Run Code Online (Sandbox Code Playgroud)
如您所见,分隔符是_V4列可以具有不同数量的分隔符.我想保留V4(不要丢弃它),但不必担心那里有多少东西.总会有四列(即我的行中没有一列只有V1-V3).
这是我一直在使用的起始tidyr命令:
separate(df, V1, c("V1", "V2", "V3", "V4"), sep="_")
Run Code Online (Sandbox Code Playgroud)
这摆脱了V4(并吐出警告,这不是最大的交易).
我有2个表(数据和参考;下面的玩具示例).这些表有START和END位置,我想检查重叠(使用data.table包中的foverlaps之类的东西),然后将值拆分如下所示.
>data <- data.table(ID=c(1,2,3), Chrom=c(1,1,2), Start=c(1,500,1000), End=c(900,5000,5000), Probes=c(899,4500,4500))
>Ref.table <- data.table(Chrom=c(1,2), Split=c(1000,2000))
>Ref.table
Chrom Split
1 1000
2 2000
>data
ID Chrom Start End Probes
1 1 1 900 899
2 1 500 5000 4500
3 2 1000 5000 4000
Run Code Online (Sandbox Code Playgroud)
如您所见,ID 1与参考表没有重叠,因此它将保持不变.但是,ID 2和3,我想根据Ref.table进行拆分.
我想得到的结果是:
>result
ID Chrom Start End Probes
1 1 1 900 899
2 1 500 1000 500
2 1 1001 5000 4000
3 2 1000 2000 1000
3 2 2001 5000 3000
Run Code Online (Sandbox Code Playgroud)
我相信你可以看到,这有两个部分:1.根据一个单独的表将范围分成两列2.在两个部分之间按比例分割#探针
我一直在寻找可以做到这一点的R包(通过染色体臂分开范围),但是找不到如上所示的那个.任何功能包的链接都会受到赞赏,但我也愿意自己编写代码......稍加帮助.
到目前为止,我只能使用foverlaps来确定是否存在重叠:示例:
>foverlaps(Ref.table[data[14]$Chrom], data[14], …Run Code Online (Sandbox Code Playgroud) 我使用以下方法来获取数据的比例信息:
>>>testfile = pd.read_csv('CCCC_output_all_FINAL.txt', delimiter="\t", header=0)
>>> testdf = pd.DataFrame({'Proportion': testfile.groupby(('Name','Chr','Position','State')).size() / 39})
>>> testdf.head(5)
Proportion
Name Chr Position State
S-3AAAA 16 27557749 4 0.025641
5 0.076923
6 0.025641
S-3AAAC 15 35061490 2 0.076923
4 0.025641
>>> testdf.to_csv('CCCC_output_summary.txt', sep='\t', header=True, index=False)
Run Code Online (Sandbox Code Playgroud)
输出文件仅包含列Proportion. 我想要下表的输出:
Name Chr Position State Proportion
S-3AAAA 16 27557749 4 0.025641
S-3AAAA 16 27557749 5 0.076923
S-3AAAA 16 27557749 6 0.025641
S-3AAAC 15 35061490 2 0.076923
S-3AAAC 15 35061490 4 0.025641
Run Code Online (Sandbox Code Playgroud)
将 pandas 输出写入这样的文件是否可能/容易?
我创建了一个漫画,并有一个分配了日期的漫画页面数据库。我想获取最新日期的漫画,但不希望获得未来的漫画。
换句话说,如果today是2000年12月12日,我有以下漫画:
我将只能查询和获得漫画1和2。
到目前为止,我已经使用gettimeofday()函数完成了此工作,只是将其分配给变量并执行了MySQL查询。这是我现在正在获取最新(但不是未来)漫画的工作的简化版本。
$gtod1 = gettimeofday();
$today = date("Y-m-d");
$directory = "comics";
$sql_lastcomic = $conn->prepare("SELECT * FROM comics WHERE story = ? AND `date` <= ? ORDER BY `date` DESC, id DESC LIMIT 1");
$sql_lastcomic->bind_param('ss', $directory, $today);
Run Code Online (Sandbox Code Playgroud)
效果很好,除了我希望它始终查看我的时区,而不是用户的时区。这样,每个人都会同时发布更新。
我查看了的文档gettimeofday(),但不确定如何修改它。还是应该修改我的MySQL语句?假设我要使用山区时间作为我的时区。