2016-09-23 6 views
1

これはパネルデータです。すべての観測値が変数PERMCOでグループ化されています。変数vwretdに2つ以上の欠損値を持つグループをすべて削除する必要があります。日付1935-06-30の変数PRCまたはSHROUTに値がない。私はこれを達成する方法がわかりません。2つ以上の欠損値を持つグループを削除する

+0

私は 'base R 'から' subset'がこれを行うことができると思います。 – user2100721

+0

@ user2100721の提案はおそらく十分です。より多くの支援が必要な場合は、(1)あなたの基準に合致するデータを含め、(2)ボランティアが簡単にテストできる方法で提供してください。例えば、全てのobsがそのフィールドが一定であるので、PERMCOによってグループ化されることは明らかではない。私は、あなたの基準が使用可能となる条件を十分に実証する、多様で小さなデータセットを提供することをお勧めします。 (ヒント:実際のデータである必要はありません。必要な作業を行うためにコードを学習することができれば、擬似的に動作します) – r2evans

答えて

0

データセットはdata.tableと思われるので、data.tableメソッドでこれを行うことができます。 'if'(sum(is.na(vwretd)))の数の否定(!)が2より大きいか、(|all '1935-06'に対応する 'PRC'(または 'SHROUT')要素が 'PERMCO' -30 "date"がNAである場合、特定のグループに対してTRUEであれば、Data.tableのサブセットを取得します。

library(data.table) 
dt[, if(!(sum(is.na(vwretd)) >2| all(is.na(PRC[date == "1935-06-30"])) | 
       all(is.na(SHROUT[date == "1935-06-30"]))) .SD , by = PERMCO] 
+0

このコマンドは、削除基準を満たすグループ内の全観測値を削除しますか? – BobLiu

+0

@ YifanLiuそれはそれを削除する必要があります(あなたの例に欠損値がなかったので完全にテストしていませんが) – akrun

+0

".SD"の意味は何ですか?ちなみに、ちょうど120の観測値を持つグループをどのように保つことができますか? – BobLiu

関連する問題