Как удалить первую строку фрейма данных в R?
У меня есть набор данных с 11 столбцами с более чем 1000 строк каждый. Колонны были обозначены В1, В2, В11 и т. д..
Я заменил имена на что-то более полезное для меня, используя команду "c".
Я не понимал, что строка 1 также содержит метки для каждого столбца, и мои фактические данные начинаются с строки 2.
есть ли способ удалить строку 1 и декремент?
6 ответов:
сохраните метки из исходного файла следующим образом:
df = read.table('data.txt', header = T)если у вас есть столбцы с именами X и y, вы можете обратиться к ним так:
df$x df$yесли вы хотите на самом деле удалить первую строку из данных.рамы, вы можете использовать отрицательные индексы, как это:
df = df[-1,]если вы хотите удалить столбец из данных.кадр, вы можете присвоить ему значение NULL:
df$x = NULLвот несколько простых примеров того, как создавать и манипулировать данными.рама в Р:
# 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тем не менее, у вас может быть больше проблем, чем просто удаление ярлыков, которые оказались в строке 1. Более вероятно, что R интерпретировал данные как текст и затем преобразовал их в факторы. Проверьте, что
str(foo), гдеfoo- это объект данных, говорит о типах данных.похоже, вам просто нужен
header = TRUEв вашем вызове для чтения в данных (предполагая, что Вы читаете его в viaread.table()или один из его оболочки.)
никто, вероятно, действительно не хочет удалять строку один. Так что если вы ищете что-то значимое, то это условный выбор
#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, ])но это, возможно, частный случай, поскольку этот фрейм данных изначально имел только один столбец.
хотя я согласен с самым проголосованным ответом, вот еще один способ сохранить все строки, кроме первого:
dat <- tail(dat, -1)Это также может быть достигнуто с помощью Хэдли Уикхема
dplyrпакета.dat <- dat %>% slice(-1)
Comments