それぞれ1000行を超える11列のデータセットがあります。列にはV1、V2、V11などのラベルが付けられました。「c」コマンドを使用して、名前をより便利な名前に置き換えました。行1にも各列のラベルが含まれていて、実際のデータは行2から始まることに気づきませんでした。
行1を削除してデクリメントする方法はありますか?
回答:
次のように、元のファイルのラベルを保持します。
df = read.table('data.txt', header = T)
xおよびyという名前の列がある場合は、次のようにアドレス指定できます。
df$x
df$y
data.frameから最初の行を実際に削除する場合は、次のような負のインデックスを使用できます。
df = df[-1,]
data.frameから列を削除する場合は、次のようにNULLを割り当てることができます。
df$x = NULL
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
drop = FALSE
だけでなく時に負のインデックス
負のインデックスを使用して、行を削除できます。例:
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
とはいえ、行1で終わったラベルを削除するだけでなく、より多くの問題が発生する可能性があります。Rがデータをテキストとして解釈し、因子に変換した可能性が高くなります。データオブジェクトstr(foo)
がどこにfoo
あるか、データ型について何を言っているかを確認してください。
header = TRUE
データを読み込むために呼び出しで必要なだけのようです(経由read.table()
またはラッパーの1つを介してデータを読み込んだと仮定します)。
行1を本当に削除したいと思う人はおそらくいないでしょう。意味のあるものを探しているなら、それは条件付き選択です
#remove rows that have long length and "0" value for vector E
>> setNew<-set[!(set$length=="long" & set$E==0),]
私は専門家ではありませんが、これでもうまくいくかもしれません、
dat <- dat[2:nrow(dat), ]
nrow(dat) == 1
。元のデータが保持されます。
dat <- dat[-1, ]
動作しましたが、データフレームが強制終了され、別のタイプに変更されました。代わりに使用する必要dat <- data.frame(dat[-1, ])
がありましたが、このデータフレームには最初は1つの列しかなかったため
、これはおそらく特殊なケースです。
header=T
のT
略であることが明確かどうかはわかりませんTRUE
。したがって、このパラメーターはRにヘッダーをロードするように指示します。詳細は?read.table
をご覧ください。