在 filter() 之后将匹配标签添加到数据框

Adding matching labels to a dataframe after filter()

如何在使用 filter() 后匹配和添加列中的关联字符串?

x<- c("1","2","3","4")  
y<- c("yes","no","maybe","NA")  
df3<-cbind.data.frame(x,y)  
unx<- unique(df3$x)  
x<- c(1:10)  
y<- LETTERS[1:10]  
df4<-cbind.data.frame(x,y )  
all<- df4 %>% filter(x %in% unx)  

至 "all" 我想在 y 中添加一个包含匹配响应的列。

我没有想法,最有效的方法是什么?我想将它应用于大型数据集。任何帮助将不胜感激。

谢谢

all$response <- df3$y[match(all$x, df3$x)]

dplyrleft_join() 应该可以解决问题。

在你上面的问题中,因素潜入并且 x 被转换为不同的类型;因此,完整的答案是使用 options(stringsAsFactors = FALSE) 开始您的脚本(除非您选择采用更好的方法并开始使用 tibbles.) 那么完整的答案如下:

all <- 
    df4 %>%
    filter(x %in% unx) %>%
    mutate(x = as.character(x)) %>%
    left_join(df3, by = "x")