我有两个data.frame df1
和df2
。
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$var1
。 df2$var1
与df1$var1
匹配时,df2$id
重新编码为df1$id
。例如,df1$id=1
df1$var1=3
然后是df2$id=1
和df2$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。最重要的是,英语不是我的母语。
答案 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