注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
请教各位一个问题:
有两表格df1和df2.
df1里包括列id, t,s
df2里包括列id, p
df1
df2
需要把df1里面的s列,按照t和p的对应关系,放到df2里面去,或者说产生df3。举例来说,如果df2里面id = 1, p = 0,那么df3中对应的s就是15.
我用了R语言里面righ_join()
df3 <- right_join(df1, df2, by = c("id" = "id", "t" = "p"))
df3
结果基本上是我想要的。但是有个现象:第5行和第6行的顺序颠倒了。在df2中,第5行p = 2, 第6行p = 1。而df3把它们的顺序对调了。这个本身并没有错,只是R帮我排序了。
有没有什么办法,让这两行的顺序不变呢?也就是说,在df3中,第5行t = 2,s = 77, p2 = 2。第6行t = 1, s = 66, p2 = 1。
谢谢!
# 附:我的代码--------------------------------
library(tidyverse)
id <- c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
t <- c(0,1,2,3,4,5,6,0,1,2,3,4,5,6)
s <- c(15,66,77,80,97,26,15,4,8,3,5,45,85,35)
df1 <- data.frame(id,t,s)
id <- c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
p <- c(0,0,1,1,2,1,2,0,0,1,1,2,1,2)
df2 <- data.frame(id,p)
df2 <- df2 %>% mutate( p2 = p)
df3 <- right_join(df1, df2, by = c("id" = "id", "t" = "p"))
df3
|