

使用するデータフレームは以下のような形です。

[code]

    name   year   price  
    A社    1999    200    
    A社    2000    202    
    A社    2001    199    
    A社    2002    400   
    A社    2003    207    
    B社    1999    300      
    B社    2000    500     
    B社    2001    201
    
[/code]

「あるベクトル」とは、`[1] 199 200 201 202 207` です。

以上のデータフレームの変数priceの値が、ベクトルの要素と合致する行のみを残したいです。  
目標は以下の形になります。

[code]

    name   year   price  
    A社    1999    200    
    A社    2000    202    
    A社    2001    199    
    A社    2003    207    
    B社    2001    201
    
[/code]


CC BY-SA 4.0
2021-11-14T02:20:12.550
83608
2021-11-14T05:28:05.570
2021-11-14T05:28:05.570
3060
48973
question
r
データフレームからあるベクトルの要素を含む行だけを抜き出し、新しいデータフレームを作成したい


**Base R**

[code]

    df <- data.frame(
      "name" = c(rep("A社", 5), rep("B社", 3)),
      "year"  = c(1999:2003, 1999:2001),
      "price" = c(200, 202, 199, 400, 207, 300, 500, 201)
    )
    
    select_price <- c(199, 200, 201, 202, 207)
    
    matched <- df[df$price %in% select_price,]
    
    print(matched)
    
    #
      name year price
    1  A社 1999   200
    2  A社 2000   202
    3  A社 2001   199
    5  A社 2003   207
    8  B社 2001   201
    
[/code]

**dplyr**

[code]

    library(dplyr)
    
    matched <- df %>% filter(price %in% select_price)
    
    print(matched)
    
    #
      name year price
    1  A社 1999   200
    2  A社 2000   202
    3  A社 2001   199
    4  A社 2003   207
    5  B社 2001   201
    
[/code]

※ `dplyr` の場合、インデックスがリセットされます。


CC BY-SA 4.0
2021-11-14T02:36:56.727
83609
2021-11-14T02:36:56.727
47127
83608
answer