У меня есть набор данных с 11 столбцами с более чем 1000 строк каждый. Столбцы были обозначены как V1, V2, V11 и т.д.
Я заменил имена чем-то более полезным для меня, используя команду "c".
Я не понимал, что в строке 1 также содержатся метки для каждого столбца, и мои фактические данные начинаются в строке 2.
Есть ли способ удалить строку 1 и уменьшить?
Ответ 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
Вот несколько простых примеров того, как создавать и обрабатывать data.frame в R:
# 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
Ответ 2
Вы можете использовать отрицательную индексацию для удаления строк, например:
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()
или одну из них.)
Ответ 3
Никто, вероятно, действительно не хочет удалить строку 1. Поэтому, если вы ищете что-то значимое, это условный отбор
#remove rows that have long length and "0" value for vector E
>> setNew<-set[!(set$length=="long" & set$E==0),]
Ответ 4
dat <- dat[-1, ]
работал, но он убил мою фреймворк данных, изменив его на другой тип. Пришлось использовать
dat <- data.frame(dat[-1, ])
, но это, возможно, особый случай, так как в этой части данных сначала был только один столбец.
Ответ 5
Я не эксперт, но это может сработать,
dat <- dat[2:nrow(dat), ]