Zachowaj etykiety z oryginalnego pliku w ten sposób:
df = read.table('data.txt', header = T)
Jeśli masz kolumny o nazwach x i y, możesz je rozwiązać w ten sposób:
df$x
df$y
Jeśli chcesz faktycznie usunąć pierwszy wiersz z data.frame, możesz użyć indeksów ujemnych w następujący sposób:
df = df[-1,]
Jeśli chcesz usunąć kolumnę z data.frame, możesz przypisać do niej NULL:
df$x = NULL
Oto kilka prostych przykładów tworzenia i manipulowania ramką data.frame w R:
> x = rnorm(10)
> y = runif(10)
> df = data.frame( x, y )
> write.table( df, 'test.txt', row.names = F, quote = F )
> 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
header=T
T
TRUE
?read.table
drop = FALSE
również podczas indeksowania ujemnegoMożesz użyć indeksowania negatywnego, aby usunąć wiersze, np .:
dat <- dat[-1, ]
Oto przykład:
> 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
To powiedziawszy, możesz mieć więcej problemów niż tylko usunięcie etykiet, które znalazły się w wierszu 1. Jest bardziej prawdopodobne, że R zinterpretował dane jako tekst, a następnie przekształcił je w czynniki. Sprawdź, co
str(foo)
i gdziefoo
jest twój obiekt danych mówi o typach danych.Wygląda na to, że wystarczy
header = TRUE
w wywołaniu odczytać dane (zakładając, że odczytujesz je za pośrednictwemread.table()
lub jednej z opakowań).źródło
Prawdopodobnie nikt nie chce usunąć pierwszego wiersza. Jeśli więc szukasz czegoś znaczącego, to jest to selekcja warunkowa
#remove rows that have long length and "0" value for vector E >> setNew<-set[!(set$length=="long" & set$E==0),]
źródło
Chociaż zgadzam się z najczęściej głosowaną odpowiedzią, oto inny sposób zachowania wszystkich wierszy oprócz pierwszego:
dat <- tail(dat, -1)
Można to również osiągnąć za pomocą
dplyr
pakietu Hadley Wickham .dat <- dat %>% slice(-1)
źródło
Nie jestem ekspertem, ale to też może działać,
dat <- dat[2:nrow(dat), ]
źródło
nrow(dat) == 1
: Następnie zachowywana jest oryginalna data.dat <- dat[-1, ]
zadziałało, ale zabiło moją ramkę danych, zmieniając ją na inny typ. Musiałem zamiast tego użyć,dat <- data.frame(dat[-1, ])
ale jest to prawdopodobnie szczególny przypadek, ponieważ ta ramka danych początkowo miała tylko jedną kolumnę.źródło