For-Loop w R DataFrame

For Loop W R Dataframe



Pętla for to struktura kontrolna, która umożliwia nam powtórzenie zestawu instrukcji określoną liczbę razy. Jest to powszechnie stosowana metoda iteracji w R, zwłaszcza gdy musimy wykonać tę samą operację na niektórych elementach lub iterować strukturę danych, taką jak ta w DataFrame. Wiersze i kolumny tworzą ramki danych w R, gdzie każdy wiersz reprezentuje pojedynczą obserwację, a każda kolumna oznacza zmienną lub aspekt tej obserwacji.

W tym konkretnym artykule używamy pętli for do iteracji po DataFrame w różnych podejściach. Należy pamiętać, że iteracja pętli for w wierszach i kolumnach może być wysoce obliczeniowa w przypadku dużych ramek danych.







Przykład 1: Używanie pętli for w wierszach ramek danych w R

Pętla for w R może być używana do iteracji po wierszach DataFrame. Wewnątrz pętli for możemy użyć indeksu wiersza, aby uzyskać dostęp do każdego wiersza DataFrame. Rozważmy następujący kod R, który jest demonstracją pętli for do iteracji po wierszach określonej DataFrame.



dane = ramka.danych(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

for(i w 1:nrow(dane)) {

wiersz <- dane [i, ]

drukuj (wiersz)

}

Tutaj najpierw definiujemy funkcję data.frame() wewnątrz „danych”. Funkcja data.frame() zawiera tutaj trzy kolumny. Każda kolumna jest ustawiona sekwencją liczb odpowiednio od 1 do 5, od 6 do 10 i od 11 do 15. Następnie wdrażana jest funkcja for-loop, która iteruje po wierszach „danych” ramki DataFrame za pomocą funkcji nrow() w celu uzyskania całkowitej liczby wierszy. Zmienna pętli „i” przyjmuje wartości do całej liczby wierszy w „danych”.



Następnie wyodrębniamy i-ty wiersz „danych” DataFrame za pomocą notacji w nawiasach kwadratowych „[ ]”. Wyodrębniony wiersz jest przechowywany w zmiennej „wiersz”, która zostanie wydrukowana przez funkcję print().





W związku z tym pętla iteruje po wszystkich wierszach w DataFrame i wyświetla numery wierszy na wyjściu wraz z wartościami w kolumnie.



Przykład 2: Używanie kolumn For-Loop Over DataFrame

Podobnie możemy użyć pętli for w R, aby przejść przez kolumny określonej ramki danych. Możemy użyć poprzedniego kodu do zapętlenia kolumn, ale musimy użyć funkcji ncol() w pętli for. I odwrotnie, mamy najprostsze podejście do zapętlania kolumn DataFrame za pomocą pętli for. Rozważ następujący kod R w tym celu:

df = ramka.danych(kolumna1 = c(10, 20, 30, 40, 50),

kol2 = c(11, 21, 31, 41, 51),

kol3 = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

kolumna <- df[[kolumna]]

drukuj (kolumna)

}

Tutaj najpierw tworzymy zmienną df, w której używana jest data.frame() z wstawianiem kolumn. DataFrame „df” zawiera trzy kolumny zawierające wartości liczbowe. Następnie używamy pętli for do iteracji nazw kolumn DataFrame „data” za pomocą funkcji colnames(). W każdej iteracji zmienna pętli „col” przyjmuje nazwę bieżącej kolumny. Wyodrębniona kolumna jest następnie przechowywana w nowej zmiennej, którą jest „kolumna”.

W ten sposób dane zmiennej „kolumnowej” wyświetlają dane wyjściowe w następującej konsoli:

Przykład 3: użycie pętli for w całej ramce danych

W poprzednich przykładach zapętliliśmy kolumny i wiersze, używając odpowiednio pętli for. Teraz używamy zagnieżdżonych pętli for do jednoczesnego przeglądania zarówno wierszy, jak i kolumn DataFrame. Kod R jest podany poniżej, gdzie zagnieżdżona pętla for jest używana w kolumnach i wierszach:

pracownicy <- data.frame(id=1:4,

imiona=c('kim', 'Jan', 'Ian', 'Marek'),

location=c('Australia', 'Ameryka', 'Kanada', 'Jordania'),

pensja=c(2000, 1800, 1500, 1000))

for (wiersz w 1:nrow(pracownicy)) {

for (col in 1:ncol(pracownicy)) {

print(paste('Indeks wiersza', wiersz, 'nazwa kolumny', kol, 'wartość komórki', pracownicy [wiersz, kolumna]))

}

}

Tutaj deklarujemy zmienną „employees”, w której wywoływana jest data.frame() w celu ustawienia kolumn. Wartości w każdej kolumnie są określone za pomocą wektorów. Następnie dla wiersza i kolumny DataFrame „pracownicy” używamy dwóch zagnieżdżonych pętli for do iteracji danych. Zewnętrzna pętla iteruje po wierszach określonej DataFrame przy użyciu „1:nrow(employees)”. Dla każdego wiersza „1:ncol(employees)” jest używane w pętli wewnętrznej, aby wielokrotnie iterować po kolumnach DataFrame.

Następnie mamy funkcję print() wewnątrz zagnieżdżonych pętli, która wdraża funkcję paste() w celu połączenia indeksu wiersza, indeksu kolumny i wartości komórki w jeden ciąg. Wyrażenie pracownik [wiersz, kol] pobiera tutaj wartość z bieżącej komórki, gdzie wiersz i kolumna to odpowiednio istniejące indeksy wierszy i kolumn.

W ten sposób dane wyjściowe na konsoli są pobierane z połączonym indeksem wiersza, indeksem kolumny i wartością komórki w pojedynczy ciąg.

Przykład 4: Alternatywna metoda pętli for w R

Pętla for jest teraz przestarzała w języku R. Zapewnia jednak kilka alternatywnych metod, które działają tak samo jak pętla for i są szybsze niż pętle for. Metoda pochodzi z funkcji „zastosuj rodzinę”, które działają w tle w pętli for, aby iterować po ramkach danych. Rozważmy następujący kod R, w którym funkcja sapply() jest używana do zapętlenia DataFrame.

dfX <- data.ramka(var1=c(1:5),

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, suma)

Tutaj najpierw ustanawiamy ramkę danych „dfX”, wywołując funkcję data.frame() z dwiema kolumnami, z których każda zawiera wartości liczbowe. Następnie drukujemy oryginalną ramkę danych „dfX” na konsoli. W następnym kroku używamy funkcji sapply() do iteracji po podanej ramce DataFrame i uzyskania sumy z każdej kolumny. Funkcja sapply() ogólnie przyjmuje argumenty „x” i „FUN”. W tym przypadku X to DataFrame „dfX”, a „FUN” to funkcja sum(), która jest stosowana do każdej kolumny DataFrame.

Wynik iteracji uzyskany za pomocą funkcji sapply() przedstawiono na poniższym ekranie. Wyniki operacji sum DataFrame są pokazane dla każdej kolumny. Co więcej, możemy również użyć innych funkcji z rodziny „apply” dla operacji for-loop w R:

Wniosek

Pracujemy z pętlami for, aby iterować po wierszach lub kolumnach DataFrame w celu wykonania określonej operacji. Pętla for jest używana indywidualnie do iteracji po kolumnach i wierszach. Ponadto używamy tego do iteracji zarówno w kolumnach, jak i wierszach ramki danych w tym samym czasie. W większości przypadków stosowanie funkcji w celu uzyskania pożądanego rezultatu jest bardziej efektywne. Przykład funkcji Apply jest podany w ostatnim przykładzie dotyczącym operacji for-loop.