Kolumny i wiersze
Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 43 z 64.
df$col i df[["col"]] zwracają kolumnę jako zwykły wektor, więc działają na nim wszystkie funkcje wektorowe. [[ ]] przyjmuje nazwę kolumny przechowywaną w zmiennej:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people$age)
print(mean(people$age))
col <- "city"
print(people[[col]])Wynik:
[1] 36 22 41
[1] 33
[1] "london" "paris" "rome" Nawiasy kwadratowe przyjmują postać [row, column], tak jak w macierzy. Pusta część oznacza wybór wszystkiego, a kolumny można wybierać według nazwy:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[2, ])
print(people[, c("name", "city")])Wynik:
name age city
2 bo 22 paris
name city
1 ada london
2 bo paris
3 cy romeJedna komórka to df[row, column], a przypisanie do niej zmienia jej wartość. Przypisywanie do całej kolumny działa tak samo:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
print(people[3, "age"])
people[3, "age"] <- 42
people$city <- toupper(people$city)
print(people)Wynik:
[1] 41
name age city
1 ada 36 LONDON
2 bo 22 PARIS
3 cy 42 ROMEAby przejść przez wiersze jeden po drugim, wykonaj pętlę po seq_len(nrow(df)) i odczytaj każdą komórkę za pomocą df[i, "col"] lub df$col[i]:
people <- data.frame(
name = c("ada", "bo", "cy"),
age = c(36, 22, 41),
city = c("london", "paris", "rome")
)
for (i in seq_len(nrow(people))) {
cat(people$name[i], "lives in", people[i, "city"], "\n")
}Wynik:
ada lives in london
bo lives in paris
cy lives in rome Wyzwanie
ŁatwyUzupełnij person_card(df, i). Zwróć jeden wiersz dla każdej kolumny w wierszu i, name: bo, zawierający nazwę kolumny i wartość z tego wiersza, w kolejności kolumn.
Dostarczony kod odczytuje tabelę z danych wejściowych za pomocą read.csv(text = input): pierwszy wiersz zawiera nazwy kolumn, a każdy kolejny wiersz to jeden rekord, w którym wartości są oddzielone przecinkami. Ostatni wiersz danych wejściowych zawiera i, a kod wyświetla każdy zwrócony wiersz.
Spróbuj swoich sił
person_card <- function(df, i) {
# Wpisz tutaj swój kod
character(0)
}
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
df <- read.csv(text = input[-length(input)])
i <- as.numeric(input[length(input)])
cat(person_card(df, i), sep = "\n")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Łańcuchy znaków w szczegółach
Podciągi za pomocą substr()Formatowanie za pomocą sprintf()Dzielenie i łączenieWyszukiwanie w łańcuchach znakówZastępowanie tekstuPowtórka – kreator nazwy użytkownika4Macierze
Tworzenie macierzyIndeksowanie macierzyPodsumowania wierszy i kolumnDziałania na macierzachPowtórka – plan miejsc10Zaawansowane sterowanie przepływem
Funkcja switch()Wektorowe ifelse()repeat i breakFunkcje rekurencyjnePodsumowanie — klasyfikator ocen2Wyszukiwanie wartości po kluczach
Wyszukiwanie nazwanych elementów wektoraSprawdzanie kluczyDodawanie i usuwanie kluczyIterowanie po nazwachPowtórzenie — giełda5Projekt — dziennik ocen
Dodawanie uczniówZapisywanie ocen3Zbiory i zliczanie
Unikalne wartościOperacje na zbiorachTesty przynależnościZliczanie za pomocą table()Podsumowanie — goście wydarzenia6Funkcje jako wartości
Funkcje anonimowePrzekazywanie funkcjiZwracanie funkcjiDomknięcia ze stanemPowtórka — reguły rabatowe9Ramki danych
Tworzenie ramek danychKolumny i wierszeFiltrowanie wierszyDodawanie i sortowaniePodsumowanie – raport sprzedaży12Projekt – śledzenie wydatków
Rejestrowanie wydatkówŁączne wydatkiPoćwicz samodzielnie: Kompilator R online