2

15 列と 75,000 行のデータ フレームがあります。列 1 には約 25,000 の一意の値があります。

列 1 の値が 365 回表示され、列 10 と 11 の値が -999 に等しくない、これからコピーされる新しいデータ フレームが必要です。

小さい例:

df <- data.frame(a=c(1,1,1,2,2,2,3,3,4), b=c(4,5,6,4,5,6,4,5,6), c=c(7,8,9,-999,8,9,7,8,9),d=c(2,3,4,2,3,-999,2,3,4))
  a b    c    d
1 1 4    7    2
2 1 5    8    3
3 1 6    9    4
4 2 4 -999    2
5 2 5    8    3
6 2 6    9 -999
7 3 4    7    2
8 3 5    8    3
9 4 6    9    4

たとえば、列 a に 3 回 (1,2,3) 表示され、列 c または d に -999 がない値が必要です。

  a b    c    d
1 1 4    7    2
2 1 5    8    3
3 1 6    9    4

私は次のようなものを使用してみましtmp <- table(df[df$c != -999,"a"])たが、それは私に頻度しか与えません。データをコピーするにはどうすればよいですか?

4

2 に答える 2

2

あなたはそこにいる途中です。まず、頻度が 3 を超える名前をサブセット化し、それらの名前のすべての要素を見つけますdf$a

tmp3 <- names(tmp)[tmp >= 3]
df[df$a %in% tmp3,]

  a b c d
1 1 4 7 2
2 1 5 8 3
3 1 6 9 4
于 2013-09-16T03:54:40.907 に答える