我正在使用R Studio版本1.0.143。
我想制作一个新的数据帧,它仅包含多个数据帧中至少两个数据帧共有的行。问题是:我必须知道公用数据也在哪里!
我正在尝试以下代码,但某些值未被识别为通用值!
library (readxl)
library(tidyverse)
df1 <- read_excel("Sample 1.xlsx")
df2 <- read_excel("Sample 2.xlsx")
df3 <- read_excel("Sample 3.xlsx")
lst(df1,df2,df3) %>%
bind_rows(.id='df') %>%
filter(GENE %in% unique(GENE[duplicated(GENE)])) %>%
mutate(df2=df) %>%
spread(df,df2) -> final
示例如下:
data.frame 1
SITE GENE
UTR3 MRPL30
UTR3 CASP10
exonic PPIL3
UTR3 ZNF154
exonic MET10
UTR3 CRCP
UTR3 CYP20A1
UTR3 PDDC1
UTR3 MET10
data.frame 2
SITE GENE
UTR3 ZNF154
UTR3 MET10
UTR3 EFHC1
UTR3 SLC11A2
UTR3 SNX22
UTR3 MET10
data.frame 3
SITE GENE
UTR3 KIAA1143
UTR3 AAK1
UTR3 EFHC1
UTR3 MET10
UTR3 METTL7A
UTR3 MET10
结果:
最终
Site Gene df1 df2 df3
UTR3 KIAA1143 NA NA df3
UTR3 AAK1 NA NA df3
UTR3 ZNF154 df1 df2 NA
UTR3 MET10 df1 NA NA
UTR3 MET10 NA df2 NA
UTR3 MET10 NA NA df3
.........(表格继续)
如您所见,所有样本中都存在MET10,但代码未给出正确的结果!
我期望以下几点:
Site Gene df1 df2 df3
UTR3 KIAA1143 NA NA df3
UTR3 AAK1 NA NA df3
UTR3 ZNF154 df1 df2 NA
UTR3 MET10 df1 df2 df3
.........(表格继续)
答案 0 :(得分:0)
library(tidyverse)
lst(df1,df2,df3) %>%
bind_rows(.id='df') %>%
filter(V1 %in% unique(V1[duplicated(V1)])) %>%
mutate(df2=df) %>%
spread(df,df2)
# V1 df1 df2 df3
# 1 A df1 df2 df3
# 2 B df1 df2 df3
# 3 G <NA> df2 df3
# 4 H <NA> df2 df3
数据
df1 <- read.table(header=F,stringsAsFactors=FALSE,text="
A
B
C
D")
df2 <- read.table(header=F,stringsAsFactors=FALSE,text="
A
B
G
H")
df3 <- read.table(header=F,stringsAsFactors=FALSE,text="
A
B
G
H")