R两个表合并

时间:2016-09-09 01:30:21

标签: r

我有两个data.frame df1df2

df1=data.frame(id=c(1,2,2),var1=c(3,5,5),var3=c(2,3,4))
df2=data.frame(id=c(1,1,2,2),var1=c('NONE','NONE','NONE','NONE'),var3=c(2,4,6,5))

现在我想合并到一个data.frame。首先,我应该更改df2$var1df2$var1df1$var1匹配时,df2$id重新编码为df1$id。例如,df1$id=1 df1$var1=3然后是df2$id=1df2$var1=3,所以结果应该是这样的:

df1=data.frame(id=c(1,2,2),var1=c(3,5,5),var3=c(2,3,4)).
df2=data.frame(id=c(1,1,2,2),var1=c(3,3,5,5),var3=c(2,4,6,5))

其次,我想合并两个data.frame并删除相同的一个。结果应该是这样的:

df=data.frame(id=c(1,1,2,2,2,2),var1=c(3,3,5,5,5,5),var2=c(2,4,3,4,6,5))

抱歉,这是我第一次使用stackoverflow。最重要的是,英语不是我的母语。

3 个答案:

答案 0 :(得分:2)

library(dplyr)
union_all(df1, df2) %>%
  distinct() %>%
  arrange(id, var1)

  id var1 var3
1  1    3    2
2  1    3    4
3  2    5    3
4  2    5    4
5  2    5    6
6  2    5    5

首先,我使用dplyr :: union,然后我发现订单被中断了。 所以,最后我使用union_all,然后对其进行排名

答案 1 :(得分:1)

我认为这就是你想要的。

adjustViewBounds
<ImageView
    android:scaleType="fitCenter" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:id="@+id/character"
    android:rotation="90"
 />

除了第3行和第4行的第3列之外,这与您给出的所需结果的示例相同。我认为这是由于你的例子中的拼写错误,但是如果我对此有误,请告诉我(并解释为什么这些值会有所不同,我会相应地更新我的答案)。

顺便说一下,有多种方法可以做到这一点,但我发现这个方法快速而简单。

答案 2 :(得分:0)

merge

df2$var1 <- df1[df2$id,'var1']; 
df2
  id var1 var3
1  1    3    2
2  1    3    4
3  2    5    6
4  2    5    5

df <- merge(df1, df2, by='id')[-2:-3]
df
  id var1.y var3.y
1  1      3      2
2  1      3      4
3  2      5      6
4  2      5      5
5  2      5      6
6  2      5      5