2

だから私はRでデータフレームをいじっていますが、まだPythonで考えすぎていて、私の問題の解決策を見つけることができないようです.

データ フレームがあり、列の 1 つはユーザー ID です。たとえば、最初に出現する数字をすべて削除したいと思います。

1,2,3,4,3,4,2,1,3,4,6,7,7

次のような出力が必要です。

 3,4,2,1,3,4,7

user_id が最初に表示される場所は削除しますが、繰り返しても他のすべては保持します。

Pythonでは、おそらく列挙またはループを使用します。R については、かっこいいと思われるいくつかの関数を見てきましたが、rle のようにデータ フレームでそれを使用する方法がわかりません。

現在、この問題の最善のアプローチについて少し迷っているので、ポインタは本当に役に立ちます。

皆さん、ありがとうございました

4

1 に答える 1

6

この関数duplicated()はここで役立ちます:

x <- c(1,2,3,4,3,4,2,1,3,4,6,7,7)
> x[duplicated(x)]
[1] 3 4 2 1 3 4 7

これが機能するduplicated()のは、その要素が複製されているかどうかを示す論理ベクトルを返すためです。

duplicated(x)
 [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE

次に、この論理ベクトルを使用して、xから必要な値をサブセット化(抽出)します。ただし、抽出では、重複した値をすべて保持し、削除しないことに注意してください。

重複した値をすべて削除するには(必要な値ではありませんが、関係なく説明します)、否定を試してください。

x[!duplicated(x)]
[1] 1 2 3 4 6 7
于 2012-12-30T21:36:27.957 に答える