★ Rのデータフレーム中の任意の行(レコード)の削除方法? ★

 60 Rのデータフレーム中の任意の行(レコード)の削除方法?  古志  2002/11/29 (金) 20:41
  61 Re: Rのデータフレーム中の任意の行(レコード)の削除方法?  青木繁伸  2002/11/29 (金) 21:15
   62 Re^2: Rのデータフレーム中の任意の行(レコード)の削除方法?  青木繁伸  2002/11/29 (金) 21:44
    72 Re^3: Rのデータフレーム中の任意の行(レコード)の削除方法?  ざーさい  2002/11/30 (土) 17:20


60. Rのデータフレーム中の任意の行(レコード)の削除方法?  古志  2002/11/29 (金) 20:41
外れ値や任意のデータ範囲のレコード(データベース的に言えば)をRのデータフレームから除去することは可能ですか?
いつもエクセルからテキストファイル経由で編集しなおしてますが,グラフで確認後,R上で編集ができれば助かります。
これについては,Rのノート類にも解説がないようですが...

     [このページのトップへ]


61. Re: Rのデータフレーム中の任意の行(レコード)の削除方法?  青木繁伸  2002/11/29 (金) 21:15
x <- 1:10
y <- rnorm(10)
z <- runif(10)
data <- data.frame(x=x, y=y, z=z)
data
data[(1:10)%%3 == 0,]

のような実行例が役に立つでしょうか。最後の行はある条件を満たす行(この場合は3の倍数の行であること)のみを選んでいます。

select <- rep(TRUE, 10)
select[3] <- FALSE
data[select,]

とすると,3行目以外が選ばれます。

この選択式を明示的に与えてもいいし,もっと複雑な論理式を生成する関数で定義してもいい(例えば20歳代の独身男性とかをあらわす変数を作る)

そういう類の質問ではない?

     [このページのトップへ]


62. Re^2: Rのデータフレーム中の任意の行(レコード)の削除方法?  青木繁伸  2002/11/29 (金) 21:44
n <-100 # 100 人分のデータのでっち上げ
sex <- floor(runif(n)*2)+1 # 男1,女2
age <- floor(rnorm(n, 30, 5)) # 平均年齢30標準偏差5
marriage <- floor(runif(n)*2) # 未婚0,既婚1
x <- rnorm(n, 100, 10) # 何かの測定値(いくつもあってよし)
data <- data.frame(sex, age, marriage, x) # データフレームについての質問だからそのように
target <- data[sex==1 & floor(age%/%10)==2 & marriage==0,] # 男,20歳代,未婚を選択
target # うまくできたかな?

     [このページのトップへ]


72. Re^3: Rのデータフレーム中の任意の行(レコード)の削除方法?  ざーさい  2002/11/30 (土) 17:20
> target <- data[sex==1 & floor(age%/%10)==2 & marriage==0,] # 男,20歳

data[sex==1 & marriage==0 & age<30 & age>20,]
でもうまくいきます。

subset(data,sex==1 & marriage==0 & age<30 & age>20)
としてもいいです。
残差をプロットしてID=78がoutlierで一時的に外すには
subset(data,id!=78)とか
data[id!=78,]
などとすればいいと思います。(idというベクトルもあると仮定してます。)

パーマネントに削除するにはアサインしなおすぐらいしか思いつきません

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 022 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る