【问题标题】:Split dataframe in R and flip where different?在R中拆分数据框并翻转不同的地方?
【发布时间】:2017-12-10 08:51:20
【问题描述】:

我有一个数据框:

rs1065852 rs201377835 rs28371706 rs5030655 rs5030865 rs3892097 rs35742686 rs5030656 rs5030867 rs28371725 rs59421388
A/del     C/del       G/del      A/del     C/del     T/del     T/del    CTT/del     T/del      C/del      C/del

我已将其拆分为“/”:

rs1065852 rs201377835 rs28371706 rs5030655 rs5030865 rs3892097 rs35742686 rs5030656 rs5030867 rs28371725 rs59421388
         A           C          G         A         C         T          T       CTT         T          C          C
       del         del        del       del       del       del        del       del       del        del        del 

我想在值不相等的地方翻转(我需要将它们与特定的值模式匹配)。

例如,如果我得到 A/G,我想像我一样将其拆分为 A G,将顺序更改为 G/A 并将其拆分为 G A。

【问题讨论】:

  • 那么你的data.frame有两行数据,你想拆分第二行,从而改变第二行的数据,新建第三行?这有点不寻常。另外,我看不出你说的拆分A/G是什么意思,你能解释一下吗?
  • 我会解释,它是 2 个等位基因(遗传 snp 的模式)。我得到一个我有/字母不相等的遗传数据(A/G)。我想拆分两次:第一次像我已经做过的那样,第二次在 / 出现的地方切换值:如果原始数据是 A/G,我也想检查 G/A,拆分它并匹配模式。

标签: r dataframe split


【解决方案1】:

如果我正确理解了这个问题,那么

#sample data (disclaimer - I have added two more columns at the end!)
df <- read.table(text="rs1065852 rs201377835 rs28371706 rs5030655 rs5030865 rs3892097 rs35742686 rs5030656 rs5030867 rs28371725 rs59421388 rs87654321 rs12345678
A/del     C/del       G/del      A/del     C/del     T/del     T/del    CTT/del     T/del      C/del      C/del      A/G      G/A", header=T)

#step to make A/G & G/A same 
df1 <- as.data.frame(t(apply(df, 2, function(x) paste(sort(unlist(strsplit(x, "/"))), collapse = "/"))))    
#similarity matrix to identify which all columns are same
m <- sapply(df1, function(x) sapply(df1, function(y) sum(as.character(x)==as.character(y))))
m

输出是:

            rs1065852 rs201377835 rs28371706 rs5030655 rs5030865 rs3892097 rs35742686 rs5030656 rs5030867
rs1065852           1           0          0         1         0         0          0         0         0
rs201377835         0           1          0         0         1         0          0         0         0
rs28371706          0           0          1         0         0         0          0         0         0
rs5030655           1           0          0         1         0         0          0         0         0
rs5030865           0           1          0         0         1         0          0         0         0
rs3892097           0           0          0         0         0         1          1         0         1
rs35742686          0           0          0         0         0         1          1         0         1
rs5030656           0           0          0         0         0         0          0         1         0
rs5030867           0           0          0         0         0         1          1         0         1
rs28371725          0           1          0         0         1         0          0         0         0
rs59421388          0           1          0         0         1         0          0         0         0
rs87654321          0           0          0         0         0         0          0         0         0
rs12345678          0           0          0         0         0         0          0         0         0
            rs28371725 rs59421388 rs87654321 rs12345678
rs1065852            0          0          0          0
rs201377835          1          1          0          0
rs28371706           0          0          0          0
rs5030655            0          0          0          0
rs5030865            1          1          0          0
rs3892097            0          0          0          0
rs35742686           0          0          0          0
rs5030656            0          0          0          0
rs5030867            0          0          0          0
rs28371725           1          1          0          0
rs59421388           1          1          0          0
rs87654321           0          0          1          1
rs12345678           0          0          1          1

【讨论】:

  • @Dr.RichardTennen 请不要忘记让我们知道解决方案是否有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多