通过匹配R中另一个数据帧的各个行来替换数据框中的行

时间:2016-11-08 11:38:42

标签: r dataframe

我有两个数据帧,我想通过插入第二个数据帧的行来替换第一个数据帧的某些行。 以下是我到目前为止所做的,但这不是我想要的结果。

df1 <- data.frame(a = c(0, 0,0,0 ,1, 1, 1, 2, 2), b = rep(0, 9)) 
df2 <- data.frame(a = c(1, 1), b = rep(1, 2)) 
df1[match(df2$a, df1$a), ] <- df2
> df1
  a b
1 0 0
2 0 0
3 0 0
4 0 0
5 1 1
6 1 0
7 1 0
8 2 0
9 2 0

我真正想要的是一个数据帧,它也采用第二行df2,如下所示:

> df1
  a b
1 0 0
2 0 0
3 0 0
4 0 0
5 1 1
6 1 1
7 1 0
8 2 0
9 2 0

有没有这种匹配的功能?

1 个答案:

答案 0 :(得分:1)

重点是你有(5,6,7)行具有相同的值:

public async Task AjudaAsync(IDialogContext context, LuisResult result){
await context.PostAsync("How can I help you? \n\n 1.To Schedule \n\n 2.Consult");
context.Wait(MessageReceived);
}

因此,如果您加入或替换,则一个条件不足以替换行5,6并排除7,如您所需的结果。

如果要替换n行,其中n = df2中的行数,可以使用以下内容。它将用a = 1替换前两行。

> which(df1$a %in% df2$a)
[1] 5 6 7

> df1[which(df1$a %in% df2$a),]
  a b
5 1 0
6 1 0
7 1 0