我需要从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个这样的集合,并且不想创建更多的临时文件.
再次,%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)
检查合并的帮助文件以获取更多选项,您可以使用它做很多事情.
| 归档时间: |
|
| 查看次数: |
12180 次 |
| 最近记录: |