私は、それぞれ1000行以上の11列のデータセットを持っています。列にはV1、V2、V11などのラベルが付いていました。 「c」コマンドを使用して名前を私にとってもっと便利なものに置き換えました。 行1にも各列のラベルが含まれていて、実際のデータが2行目から始まることはわかりませんでした。Rのデータフレームの最初の行を削除するには?
行1を削除する方法はありますか?
私は、それぞれ1000行以上の11列のデータセットを持っています。列にはV1、V2、V11などのラベルが付いていました。 「c」コマンドを使用して名前を私にとってもっと便利なものに置き換えました。 行1にも各列のラベルが含まれていて、実際のデータが2行目から始まることはわかりませんでした。Rのデータフレームの最初の行を削除するには?
行1を削除する方法はありますか?
このようなあなたの元のファイルからラベルを保つ(あなたはread.table()
かのラッパーのうちの1つを介してそれを読んでと仮定。):
df = read.table('data.txt', header = T)
あなたは、xとyという名前の列を持っている場合は、あなたがこのようにそれらに対処することができます:あなたが実際にトンを削除したい場合は
df$x
df$y
は、あなたはそれにNULLを割り当てることができ、あなたはdata.frameから列を削除したい場合は
df = df[-1,]
:
彼が最初にあなたは、このような負のインデックスを使用することができ、data.frameから行ここでRにdata.frameを作成および操作する方法のいくつかの簡単な例です:
# create a data.frame with 10 rows
> x = rnorm(10)
> y = runif(10)
> df = data.frame(x, y)
# write it to a file
> write.table(df, 'test.txt', row.names = F, quote = F)
# read a data.frame from a file:
> read.table(df, 'test.txt', header = T)
> df$x
[1] -0.95343778 -0.63098637 -1.30646529 1.38906143 0.51703237 -0.02246754
[7] 0.20583548 0.21530721 0.69087460 2.30610998
> df$y
[1] 0.66658148 0.15355851 0.60098886 0.14284576 0.20408723 0.58271061
[7] 0.05170994 0.83627336 0.76713317 0.95052671
> df$x = x
> df
y x
1 0.66658148 -0.95343778
2 0.15355851 -0.63098637
3 0.60098886 -1.30646529
4 0.14284576 1.38906143
5 0.20408723 0.51703237
6 0.58271061 -0.02246754
7 0.05170994 0.20583548
8 0.83627336 0.21530721
9 0.76713317 0.69087460
10 0.95052671 2.30610998
> df[-1,]
y x
2 0.15355851 -0.63098637
3 0.60098886 -1.30646529
4 0.14284576 1.38906143
5 0.20408723 0.51703237
6 0.58271061 -0.02246754
7 0.05170994 0.20583548
8 0.83627336 0.21530721
9 0.76713317 0.69087460
10 0.95052671 2.30610998
> df$x = NULL
> df
y
1 0.66658148
2 0.15355851
3 0.60098886
4 0.14284576
5 0.20408723
6 0.58271061
7 0.05170994
8 0.83627336
9 0.76713317
10 0.95052671
あなたは例えば、行を削除するには、負のインデックスを使用することができます。ここでは
dat <- dat[-1, ]
は一例です:あなたがちょうど終わったラベルを削除するよりも多くの問題を抱えていること、言っ
> dat <- data.frame(A = 1:3, B = 1:3)
> dat[-1, ]
A B
2 2 2
3 3 3
> dat2 <- dat[-1, ]
> dat2
A B
2 2 2
3 3 3
Rはデータをテキストとして解釈し、それを要因に変換する可能性が高くなります。どのstr(foo)
(foo
があなたのデータオブジェクトであるか)を確認して、データタイプについて言います。
あなただけのデータを読み込むためにあなたの呼び出しでheader = TRUE
を必要とするように聞こえる
完全に右ギャビン。それはそれを与えた頭=偽でした。 – akz
誰もが、おそらく実際に行1を削除しようとしていません。あなたが意味のある何かを探しているのであれば、それは条件付き選択です
#remove rows that have long length and "0" value for vector E
>> setNew<-set[!(set$length=="long" & set$E==0),]
これは質問されなかった質問に答えてください。私はそれが助けよりも混乱していると思う。 –
dat <- dat[-1, ]
働いていたが、それは私のデータフレームを殺し、別の型にそれを変えます。代わりに dat <- data.frame(dat[-1, ])
を使用しなければなりませんでしたが、このデータフレームは最初は1つの列しか持たなかったため、これは特別なケースです。
これはコメントであり、答えではありません!それにもかかわらず、私は再現できませんでした。 –
私は専門家ではないけど、これは同様に動作して、
dat <- dat[2:nrow(dat), ]
実際には 'nrow(dat)== 1'のときにはこれは動作しません。元のdatは保存されます。 –
もし 'header = T'で' T'が 'TRUE'を表しているので、このパラメータはRにヘッダをロードするよう指示します。詳細は '?read.table'を参照してください。 – daroczig
単一の列データフレームがある場合は、この回答を見てください - https://stackoverflow.com/a/3232770/4606130負のインデックス付けの際には 'drop = FALSE'も必要です – micstr