小编Ste*_*ner的帖子

如何从MySQL中的一串文本中选择不连续的字符?

我有一个包含数百万行和一列文本的表,正好是11,159个字符.它看起来像这样:

1202012101...(to 11,159 characters)
1202020120...
0121210212...
...
(to millions of rows)
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使用

SELECT SUBSTR(column,2,4) FROM table;
Run Code Online (Sandbox Code Playgroud)

...如果我想拉出字符2,3,4和5:

1202012101...
1202020120...
0121210212...
 ^^^^
Run Code Online (Sandbox Code Playgroud)

但我需要提取不连续的字符,例如字符1,5,7:

1202012101...
1202020120...
0121210212...
^   ^ ^
Run Code Online (Sandbox Code Playgroud)

我意识到这可以通过以下查询来完成:

SELECT CONCAT(SUBSTR(colm,1,1),SUBSTR(colm,5,1),SUBSTR(colm,7,1)) FROM table;
Run Code Online (Sandbox Code Playgroud)

但是这个查询变得非常难以构建我需要选择的数千个字符.所以对于问题的第一部分 - 我如何构建一个类似这样的查询:

SELECT CHARACTERS(string,1,5,7) FROM table;
Run Code Online (Sandbox Code Playgroud)

此外,我想要选择的字符的索引来自不同的表,看起来像这样:

char_index   keep_or_discard
1            keep
2            discard
3            discard
4            discard
5            keep
7            discard
8            keep
9            discard
10           discard
Run Code Online (Sandbox Code Playgroud)

因此,对于问题的第二部分,我如何根据第二个表中该字符索引的keep_or_discard ="keep"来构建查询以从第一个表中选择特定字符?

mysql sql substring

5
推荐指数
1
解决办法
453
查看次数

按列拆分分隔文件到较小的文件

我熟悉linux中的split命令.如果我有一个100行长的文件,

split -l 5 myfile.txt
Run Code Online (Sandbox Code Playgroud)

...将myfile.txt拆分为20个文件,每个文件有5行,并将它们写入文件.

我的问题是,我想通过专栏来做这件事.给定一个包含100列的文件,制表符分隔,是否有类似的命令将此文件拆分为20个较小的文件,每个文件有5列和所有行?

我知道如何使用剪切,但我希望有一个简单的UNIX命令,我从来没有听说过,如果不用perl或其他东西包裹剪切就可以实现这一点.

提前致谢.

unix linux bash split cut

4
推荐指数
1
解决办法
1万
查看次数

Unix连接两个以上的文件

我有三个文件,每个文件都有一个ID和一个值.

sdt5z@fir-s:~/test$ ls
a.txt  b.txt  c.txt
sdt5z@fir-s:~/test$ cat a.txt 
id1 1
id2 2
id3 3
sdt5z@fir-s:~/test$ cat b.txt 
id1 4
id2 5
id3 6
sdt5z@fir-s:~/test$ cat c.txt 
id1 7
id2 8
id3 9
Run Code Online (Sandbox Code Playgroud)

我想创建一个看起来像这样的文件......

id1 1 4 7
id2 2 5 8
id3 3 6 9
Run Code Online (Sandbox Code Playgroud)

...最好使用单个命令.

我知道连接和粘贴命令.粘贴将每次复制id列:

sdt5z@fir-s:~/test$ paste a.txt b.txt c.txt 
id1 1   id1 4   id1 7
id2 2   id2 5   id2 8
id3 3   id3 6   id3 9
Run Code Online (Sandbox Code Playgroud)

加入效果很好,但一次只有两个文件:

sdt5z@fir-s:~/test$ join a.txt b.txt 
id1 1 4
id2 …
Run Code Online (Sandbox Code Playgroud)

perl text join cut paste

4
推荐指数
1
解决办法
2998
查看次数

将R中的矩阵展平为四列(索引和上/下三角形)

我正在使用cor.prob()函数,该函数已在邮件列表周围多次发布,以获得相关矩阵(下对角线)和p值(上对角线):

cor.prob <- function (X, dfr = nrow(X) - 2) {
  R <- cor(X)
  above <- row(R) < col(R)
  r2 <- R[above]^2
  Fstat <- r2 * dfr/(1 - r2)
  R[above] <- 1 - pf(Fstat, 1, dfr)
  R[row(R) == col(R)] <- NA
  R
}

d <- data.frame(x=1:5, y=c(10,16,8,60,80), z=c(10,9,12,2,1))

cor.prob(d)

> cor.prob(d)
           x           y           z
x         NA  0.04856042 0.107654038
y  0.8807155          NA 0.003523594
z -0.7953560 -0.97945703          NA
Run Code Online (Sandbox Code Playgroud)

如何将上述相关矩阵(下半部分的相关性,上半部分的p值)折叠成四列矩阵:两个指标,相关性和p值?例如:

i  j   cor    pval
x  y   .88    .048
x  z  -.79    .107
y …
Run Code Online (Sandbox Code Playgroud)

r matrix

3
推荐指数
1
解决办法
3295
查看次数

分组聚集与dplyr,tidyr,purrr

我正在尝试收集两个不同变量的数据,每个变量分布在几个列上,并由另外两个变量分组.这是问题所在.我有几个基因,几个样本.每个样本具有三种不同的可能基因型,每种基因型具有相关的频率.我想整理这个以获得基因,样本,基因型,频率的单一列.

我有一个hackjob解决方案,涉及创建listcolumns,传播它们,然后使用purrr :: map函数提取列.它很丑陋,不是真正的可扩展性,频率在转换回数字之前转换为字符,不理想.

有没有更好的方法来解决这个问题?


library(tidyverse) 
# or, separately load dplyr, tibble, tidyr, purrr

# Here's what I have
have <- data_frame(gene=rep(c("gX", "gY"), each=2),
                   sample=rep(c("s1", "s2"), 2),
                   genotype1=c("AA", "AA", "GG", "GG"),
                   genotype2=c("AC", "AC", "GT", "GT"),
                   genotype3=c("CC", "CC", "TT", "TT"),
                   freq1=c(.8,.9, .7, .6),
                   freq2=c(.15,.1, .2, .35),
                   freq3=c(.05,0, .1, .05))
have
#> # A tibble: 4 × 8
#>    gene sample genotype1 genotype2 genotype3 freq1 freq2 freq3
#>   <chr>  <chr>     <chr>     <chr>     <chr> <dbl> <dbl> <dbl>
#> 1    gX     s1        AA        AC …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr purrr tidyverse

3
推荐指数
1
解决办法
1302
查看次数

如何在R中获得精确的低p值(来自F检验)

我正在计算R中F检验的p值,它似乎无法显示低于1e-16的任何值.例如,对于F值从80到90,自由度1,200:

> 1-pf(80:90,1,200)
 [1] 2.220446e-16 2.220446e-16 1.110223e-16 1.110223e-16 0.000000e+00 0.000000e+00 0.000000e+00
 [8] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
Run Code Online (Sandbox Code Playgroud)

如何提高pf()函数计算的精度?

r floating-point-precision

2
推荐指数
1
解决办法
2541
查看次数

传播多个协调列

我在单独的列中有相对整齐的数据样本,基因,等位基因和频率.对于每个基因和每个样本,我需要将等位基因及其相应的频率分成不同的列.这就是我拥有的和我需要的东西.

尝试用dplyr/tidyr来做这件事,但我会采取任何我能得到的解决方案.

是)我有的:

data.frame(sample=rep("sample1", 10), 
           gene=rep(paste0("gene", 1:5), each=2), 
           allele=c("A", "G", "A", "C", "A", "T", "C", "G", "G", "T"), 
           freq=c(.9, .1, .8, .2, .7, .3, .6, .4, .5, .5))

#     sample  gene allele freq
# 1  sample1 gene1      A  0.9
# 2  sample1 gene1      G  0.1
# 3  sample1 gene2      A  0.8
# 4  sample1 gene2      C  0.2
# 5  sample1 gene3      A  0.7
# 6  sample1 gene3      T  0.3
# 7  sample1 gene4      C  0.6
# 8  sample1 gene4      G …
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
2
解决办法
495
查看次数

R:根据多个变量的值定义不同的模式

这就是我所拥有的:

data.frame(x=c(0,0,0,1,1,1), y=c(0,0,1,0,1,1))

  x y
1 0 0
2 0 0
3 0 1
4 1 0
5 1 1
6 1 1
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:

data.frame(x=c(0,0,0,1,1,1), y=c(0,0,1,0,1,1), pattern=c(1,1,2,3,4,4))

  x y pattern
1 0 0       1
2 0 0       1
3 0 1       2
4 1 0       3
5 1 1       4
6 1 1       4
Run Code Online (Sandbox Code Playgroud)

也就是说,我有一堆列(不仅仅是两列)和数千行.我想浏览每一行,弄清楚x,y,z等的不同组合是什么,将每个组称为不同的模式,并为每一行返回该模式.

(背景:我在很多时间点都有几个基因的基因表达数据.我想通过根据在任何特定时间点上升或下调的某些模式来定义模式,试着看看哪些基因随着时间的推移而相似.

谢谢.

r dplyr

2
推荐指数
2
解决办法
653
查看次数

剥离转义字符的ASCII文本(ls输出重定向)

我正在使用Mac ssh'ing进入无头RedHat盒子,我需要为下游程序创建一个文件列表来操作.

当我重定向输出时ls,创建的文件有一堆转义字符,而我的下游脚本无法正确读取文件名.当我创建cat文件时,一切看起来都很好:

sdt5z@franklin:~/cufflinks$ ls *.pbs
01_SL8426.pbs  03_SL8428.pbs  09_SL8891.pbs
02_SL8427.pbs  04_SL8429.pbs

sdt5z@franklin:~/cufflinks$ ls *.pbs > myfiles.txt

sdt5z@franklin:~/cufflinks$ cat myfiles.txt 
01_SL8426.pbs
02_SL8427.pbs
03_SL8428.pbs
04_SL8429.pbs
09_SL8891.pbs
Run Code Online (Sandbox Code Playgroud)

但是如果我在vim中打开文件,这就是它的样子(所有的小字符^[[^[终端模拟器中的字符都是蓝色的):

  1 ^[[0m^[[0m01_SL8426.pbs^[[0m
  2 ^[[0m02_SL8427.pbs^[[0m
  3 ^[[0m03_SL8428.pbs^[[0m
  4 ^[[0m04_SL8429.pbs^[[0m
  5 ^[[0m09_SL8891.pbs^[[0m
  6 ^[[m
~                                                                
~                                                                
~                                                                
~ 
Run Code Online (Sandbox Code Playgroud)

运行file命令显示此文件具有转义序列.

sdt5z@franklin:~/cufflinks$ file myfiles.txt 
myfiles.txt: ASCII text, with escape sequences
Run Code Online (Sandbox Code Playgroud)

我的问题是,我怎么能非常简单地将文件重定向到文件,没有任何转义字符?是什么原因造成这种情况?

谢谢.myfiles.txt:带有转义序列的ASCII文本

unix linux shell text escaping

1
推荐指数
1
解决办法
4313
查看次数

折叠数据框,添加因子值

可能重复:
聚合R总和

我有一个如下所示的数据框:

  sample value
1      a     1
2      a     2
3      b     3
4      b     4
5      b     5
6      c     6
Run Code Online (Sandbox Code Playgroud)

我需要在数据帧上折叠sample(可能是一个字符向量或一个因子),添加所有values,所以我得到的结果数据框如下所示:

  sample sum
1      a   3
2      b  12
3      c   6
Run Code Online (Sandbox Code Playgroud)

现在是周一早上,我能想到的只是写一个复杂的for循环.我如何使用apply,plyr等来对此进行矢量化?

r

1
推荐指数
1
解决办法
2669
查看次数

标签 统计

r ×6

cut ×2

dplyr ×2

linux ×2

text ×2

unix ×2

bash ×1

escaping ×1

floating-point-precision ×1

join ×1

matrix ×1

mysql ×1

paste ×1

perl ×1

purrr ×1

shell ×1

split ×1

sql ×1

substring ×1

tidyr ×1

tidyverse ×1