小编Lei*_*Lei的帖子

R:按公共列合并两个数据帧

我有两个data.frames,"x"和"y"."x"和"y"具有不同的列数.如下:

x
  A1 A3 A5 A6
1  a  b  b  a

y
   A1 A2 A3 A4 A5 A6 A7
1   9 10 11  9 10 10 10
2   0  6  2  2  8  1  4
3   0  4  0  1  0  0  0
4  12 12 12 12 12 12 11
5  11 11  9 12 12 11 11
6   0  0  0  0  0  1  0
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的data.frame,只有两个data.frames的公共列.而这个新data.frame的内容只来自"y".最终的data.frame应如下所示:

  A1 A3 A4 A6
1  9 11  9 10
2  0  2 …
Run Code Online (Sandbox Code Playgroud)

merge r

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

如何使grepl功能具体?

我的数据框如下所示.我需要逐个根据"geneID"列的名称提取特定行的数据.我用的是grepl功能.

#Data frame:geneDf  
geneID=c("EGFR","Her2","PTENPP","PTEN")
patient1=c(12,23,56,23)
patient2=c(23,34,11,6)
patient3=c(56,44,32,45)
patient4=c(23,64,45,23)
geneDf=data.frame(patient1,patient2,patient3,patient4,geneID)

geneDf
  patient1 patient2 patient3 patient4 geneID
1       12       23       56       23   EGFR
2       23       34       44       64   Her2
3       56       11       32       45 PTENPP
4       23        6       45       23   PTEN
Run Code Online (Sandbox Code Playgroud)

前三行效果很好.

targetGene<-subset(geneDf,grepl(geneDf$geneID[1],geneDf$geneID))
targetGene
  patient1 patient2 patient3 patient4 geneID
1       12       23       56       23   EGFR
Run Code Online (Sandbox Code Playgroud)

当我提取第4行的数据时,我得到了这个:

targetGene<-subset(geneDf,grepl(geneDf$geneID[4],geneDf$geneID))
targetGene
  patient1 patient2 patient3 patient4 geneID
3       56       11       32       45 PTENPP
4       23        6       45       23   PTEN
Run Code Online (Sandbox Code Playgroud)

似乎其他数据,在这种情况下,"geneID"列的第3行,其中包括第4行的内容也被拾取.我的命令出了什么问题?如何使它每次只获取某一行的数据?

r extract

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

标签 统计

r ×2

extract ×1

merge ×1