如何从R中的dataframe1中选择行,其中dataframe $ 1column位于dataframe2 $ column中的某处

wes*_*erA 1 r

我需要从dataframe1的行创建一个新的数据帧,这样dataframe1 $ column的值是在dataframe2 $ colum中找到的值

数据帧是:

y <- "name,number,lunch  
joe,2,peaches  
steve,5,hotdog  
jon,7,clamroll  
nick,11,sloppyJoe"


x <- "number,office  
1,1b  
2,1a  
3,2s  
4,4d  
5,f4  
6,f4  
7,h3  
8,g3  
9,j7  
10,d3 
11,jk"  

df1 <- read.csv(textConnection(df1), header=TRUE, sep=",", stringsAsFactors=FALSE)  
df2 <- read.csv(textConnection(df2), header=TRUE, sep=",", stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

我试过了:

df3 <- df1[which(df1$number == df2$number), ]
Run Code Online (Sandbox Code Playgroud)

无济于事.我如何在R中正确执行此操作?我可以编写一个perl脚本,但我有大约100个这样的集合,并且不想创建更多的临时文件.

Jor*_*eys 5

再次,%in%诀窍:

> df1[df1$number %in% df2$number,]
   number office
2       2     1a
5       5     f4
7       7     h3
11     11     jk
Run Code Online (Sandbox Code Playgroud)

对于它的价值,如果你想要合并它们,你可以轻松地进行合并.在这种情况下,我会说这是最干净的解决方案:为您提供现有员工的每个办公室,并匹配他们:

> merge(df1,df2)
  number office  name     lunch
1      2     1a   joe   peaches
2      5     f4 steve    hotdog
3      7     h3   jon  clamroll
4     11     jk  nick sloppyJoe
Run Code Online (Sandbox Code Playgroud)

检查合并的帮助文件以获取更多选项,您可以使用它做很多事情.