2011-10-30 19 views

Odpowiedz

31

Można utworzyć funkcję następująco

Nth.delete<-function(dataframe, n)dataframe[-(seq(n,to=nrow(dataframe),by=n)),] 

Niech przetestować go

DF<-data.frame(A=1:15, B=rnorm(15), C=sample(LETTERS,15)) 
Nth.delete(DF, 3) 
+2

, więc df [ -rowNumber,] usuwa ten wiersz – MySchizoBuddy

+0

, to jest poprawne –

7

Jeśli chcesz uzyskać każdy z n-tej kolumny z ramki danych lub wektora itp użycie modulo podzbioru ...

Wybierz n-tą kolumnę, powtarzając zestawy tutaj jako modulo 3 (wybierz n-ę, jak chcesz)

> x <- c(1,2,3,4,5,6) 
> d <- rbind(x,x,x) 
> df <- as.data.frame(d, row.names=T) 
> c <- 1:ncol(df) 
> c 
[1] 1 2 3 4 5 6 
c%%3 ### nth cycle, here every 3 
[1] 1 2 0 1 2 0 

#select the every 3rd column of every 3 
> df[, c%%3==0] 
    V3 V6 
1 3 6 
2 3 6 
3 3 6 

#every first column of every 3 
> df[, c%%3==1] 
    V1 V4 
1 1 4 
2 1 4 
3 1 4 

#every 2nd column of every 3 
> df[, c%%3==2] 
    V2 V5 
1 2 5 
2 2 5 
3 2 5 


#drop the 3rd columns 
> df[, !(c%%3==0)] 
    V1 V2 V4 V5 
1 1 2 4 5 
2 1 2 4 5 
3 1 2 4 5 

etc ... zamiana c < -nrow (DF) dla podzbioru wierszy ..