2017-12-23 11 views
1

からデータを削除する:R(Iは、左(L)のためにのみ骨の測定がある場合の任意の標本(コンテキスト)を削除する必要が私はこのようになり、データフレームを持つデータフレーム

    CEMETERY CONTEXT SEX BONE MEASUREMENT VALUE 
1 Medieval-St. Mary Graces 6225 MALE   HuE1 L 64.1 
2 Medieval-St. Mary Graces 6225 MALE   HuE1 R 62.7 
3 Medieval-St. Mary Graces 6225 MALE   HuHD L 50.1 
4 Medieval-St. Mary Graces 6225 MALE   HuHD R 51.3 
5 Medieval-St. Mary Graces 6225 MALE   HuL1 R 346.0 
6 Medieval-St. Mary Graces 6272 FEMALE   HuHD L 41.3 

か)、両方を持つ代わりに(例えば、検体がHuE1Lを有するがHuE1Rを含まない場合、それを除去する必要がある)。私はこれを行う最良の方法は、データフレームが大きすぎて特定の行を個別に削除できないためです。このデータフレームを作成するには、merge()関数を使用しました。これにより、必要な処理があれば、各ボーンのデータフレームが別々のデータフレームにあります。

EDIT: 私はdata.table使用してみました:

library(data.table) 
setDT(df) 
setkey(df, CONTEXT, BONE) 
df[df[, .N, key(df)][N == 2, .(CONTEXT, BONE)]] 

が、それはこの返します

     CEMETERY CONTEXT SEX EXPANSION VALUE 
    1: Medieval-Spital Square  19 FEMALE HuE1 L 57.9 
    2: Medieval-Spital Square  19 FEMALE HuE1 R 58.8 
    3: Medieval-Spital Square  19 FEMALE HuHD R 44.6 
    4: Medieval-Spital Square  19 FEMALE HuL1 L 326.0 
    5: Medieval-Spital Square  19 FEMALE HuL1 R 332.0 

474: Medieval-St. Mary Graces 16332 MALE RaHD L 25.4 
475: Medieval-St. Mary Graces 16344 MALE HuHD R 48.8 
476: Medieval-St. Mary Graces 20001 FEMALE HuHD L 40.2 
477: Medieval-St. Mary Graces 20001 FEMALE HuHD R 39.8 
478: Medieval-St. Mary Graces 20001 FEMALE RaHD R 20.8 

ので、それが実際にその唯一の骨の測定値を削除していないが左または右にある。 LsとRsが別の列ではなく、 'EXPANSION'列の一部であることを明確にするためには、最初に列を作成する必要があります。

+0

@AftabHusainと我々はkeyによって行のCONTEXTBONE

  • カウント数でカウントするようsetkey(df, CONTEXT, BONE)df[, .N, key(df)]
  • サブセットデータを使用事前に "**の投稿には欠けています。 – usr2564301

  • +0

    "UPDATED"のようなものを追加してタイトルを編集しないでください。 –

    答えて

    1

    あなたはdata.tableを使用してデータセットサブセットすることができます

    library(data.table) 
    setDT(df) 
    setkey(df, CONTEXT, BONE) 
    df[df[, .N, key(df)][N == 2, .(CONTEXT, BONE)]] 
    
    #     CEMETERY CONTEXT SEX BONE MEASUREMENT VALUE 
    # 1: Medieval-St. Mary Graces 6225 MALE HuE1   L 64.1 
    # 2: Medieval-St. Mary Graces 6225 MALE HuE1   R 62.7 
    # 3: Medieval-St. Mary Graces 6225 MALE HuHD   L 50.1 
    # 4: Medieval-St. Mary Graces 6225 MALE HuHD   R 51.3 
    

    説明:

      は、あなたのデータで data.tablesetDT()
    1. Setキー(インデックス)(setkey())にデータを入れ
    2. 。 **「を追加しないでくださいありがとう:2出現(N == 2
    +0

    ありがとうございます! data.tableパッケージをダウンロードする必要はありますか?それは、私が –

    +0

    @AislingMurray 'install.packages(" data.table ")'に入れるとき、 'data.frame'というパッケージがないことを私に伝えます。大規模なデータセットで作業する予定があるのか​​どうか調べてください。 – PoGibas

    +0

    'data.table' ;-)で別にやることにしました(リンクされた重複したターゲットを参照してください)OTOH:これは素晴らしいアプローチです – Jaap

    関連する問題