2017-03-31 10 views
0

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) 

「すべて」に「y」という一致応答を含む列を追加したいとします。

私は考えていません、それを行う最も効率的な方法は何ですか?大規模なデータセットに適用したいと思います。どんな助けでも大歓迎です。

left_join()はトリックを行う必要があり dplyr

答えて

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

はありがとうございました。それは完璧だった。 –

+0

いつでも、あなたが答えに満足していることを示すチェックマーク(および上の票)をクリックすることを検討してください。ありがとうございました。 –

0

ありがとうございます。

上記の質問では、要因が入り込み、xはさまざまなタイプにキャストされています。したがって、完全な答えは(あなたがより良いアプローチを取るとtibbles.で作業を開始することを選択しない限り)options(stringsAsFactors = FALSE)でスクリプトを開始するだろう その後、完全な答えは以下のようになります:

all <- 
    df4 %>% 
    filter(x %in% unx) %>% 
    mutate(x = as.character(x)) %>% 
    left_join(df3, by = "x") 
関連する問題