論理条件でデータフレームの行をフィルタリングする 質問する

論理条件でデータフレームの行をフィルタリングする 質問する

論理条件に基づいて行をフィルタリングしたいdata.frame。次のようなデータフレームがあるとします。

   expr_value     cell_type
1    5.345618 bj fibroblast
2    5.195871 bj fibroblast
3    5.247274 bj fibroblast
4    5.929771          hesc
5    5.873096          hesc
6    5.665857          hesc
7    6.791656          hips
8    7.133673          hips
9    7.574058          hips
10   7.208041          hips
11   7.402100          hips
12   7.167792          hips
13   7.156971          hips
14   7.197543          hips
15   7.035404          hips
16   7.269474          hips
17   6.715059          hips
18   7.434339          hips
19   6.997586          hips
20   7.619770          hips
21   7.490749          hips

私がしたいのは、見た目は同じだが、1 つの cell_type のデータのみを持つ新しいデータ フレームを取得することです。たとえば、セル タイプ "hesc" を含む行をサブセット化/選択します。

   expr_value     cell_type
1    5.929771          hesc
2    5.873096          hesc
3    5.665857          hesc

または、細胞タイプ「bj 線維芽細胞」または「hesc」のいずれか:

   expr_value     cell_type
1    5.345618 bj fibroblast
2    5.195871 bj fibroblast
3    5.247274 bj fibroblast
4    5.929771          hesc
5    5.873096          hesc
6    5.665857          hesc

これを簡単に行う方法はありますか?

私はもう試した:

expr[expr[2] == 'hesc']
# [1] "5.929771" "5.873096" "5.665857" "hesc"     "hesc"     "hesc"    

元のデータフレームが「expr」と呼ばれている場合、結果は間違った形式で返されます。

ベストアンサー1

行を選択するには1つ'cell_type' (例 'hesc') の場合は、以下を使用します==:

expr[expr$cell_type == "hesc", ]

2つ以上の異なる「cell_type」に従って行を選択するには(例: 'hesc'または'bj 線維芽細胞')の場合は、次を使用します%in%

expr[expr$cell_type %in% c("hesc", "bj fibroblast"), ]

おすすめ記事