Laboratorium nr.10/11 Bioinformatyka 20.01.16 Wczytywanie i
Transkrypt
Laboratorium nr.10/11 Bioinformatyka 20.01.16 Wczytywanie i
Laboratorium nr.10/11 Bioinformatyka 20.01.16 Wczytywanie i zapisywanie danych z/do pliku # Zapoznaj się z składnią funkcji read.table oraz read.csv umożliwiającą wczytanie danych z pliku wpisując w konsoli: >> ?read.table # Pobierz i zapisz plik ze strony http://biecek.pl/MOOC/dane/koty_ptaki.csv dane<-read.table(file = "http://biecek.pl/MOOC/dane/koty_ptaki.csv",sep=";", dec=",", header=TRUE) View(dane) #pobierz i Wyświetl kolumnę waga dane$waga->a print(a) # wyświetl drugi wiersz dane[2,]->b print(b) #wybierz kolumny zywotnosc, druzyna korzystając z funkcji select (zainstaluj pakiet dplyr) #sprawdź działanie komend: k<-c(dane$waga, dane$dlugosc, dane$habitat) c<-dane[,1:3] a<-as.numeric(dane$habitat) b<-grepl("Azja", dane$habitat) # Zapoznaj się ze składnią funkcji write.table i zapisz dane zawarte w zmiennej k do pliku write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", eol = "\n", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE, qmethod = c("escape", "double"), fileEncoding = "") x - określa jaka tabela/które dane mają być zapisane do pliku tekstowego, file - określa nazwę pliku tekstowego, do którego dane będą zapisane, append - domyślna wartość FALSE oznacza, że jeśli plik o nazwie file istniał wcześniej, to zostanie on skasowany. Jeżeli ustawimy append=TRUE to nowe dane będą dopisane do końca poprzedniego pliku. sep - określa znak, który jest separatorem kolejnych wartości, dec - określa znak, który jest separatorem dziesiętnym (zazwyczaj . lub ,), row.names - określa czy do pliku tekstowego mają być zapisywane nazwy wierszy, domyślnie TRUE, col.names - określa czy do pliku tekstowego mają być zapisywane nazwy kolumn, domyślnie TRUE. #wczytaj plik http://biecek.pl/R/dane/mieszkaniaWarszawa.csv dane <- read.table("http://biecek.pl/R/dane/mieszkaniaWarszawa.csv", sep=";", header=TRUE, dec=".") View(dane) #posortuj wiersze w pliku wzgledem powierzchni mieszkań oraz daty budowy #od najmniejszej do największej korzystając z funkcji #install.packages("dplyr") library(dplyr) arrange(dane,surface)->dane3 View(dane3) #posortuj wiersze w pliku względem powierzchni mieszkań ale niezależnie dla mieszkań #hipotecznych i spółdzielczych wykorzystaj arrange(zbior,zmienna1,zmienna2) # filtrowanie danych przykład tylkoMieszkaniaWysokopowierzchniowe <- filter(dane,type = = "spoldzielcze",surface > 100) View(tylkoMieszkaniaWysokopowierzchniowe) #wyświetl podstawowe dane statystyczne dotyczące mieszkań summary(dane) #uporządkuj rosnąco obserwacje (wiersze) w zależności od nr piętra w budynku Wektory, konwersja danych #utwórz wektor m o elementach: m<-c(1,2,3,4,5,6,7,8,9,10) #utwórz wektor o elementach od 1 do 20 z krokiem 2 n<-seq(from = 1, to = 20, by = 2) #Zapisz wektory m in jako kolumny tabeli do pliku dane1.txt wykorzystaj: dane11<-cbind(m,n) View(dane11) #utwórz etykiety o nazwach "Nr" i "ilość" i nadaj nagłówki danym zawartym w pliku dane1.txt dane12<-as.data.frame(dane11) names(dane12)<-c("Nr","ilosc") View(dane12) Zadanie 1 Wczytaj dane opisujące objawy psychopatologiczne zapisane w zmiennej eden oraz dane opisujące pracę (funkcję) nerki po przeszczepie kidney (w danych kidney w kolumnach MDRD7 - MDRD60 znajdują się pomiary sprawności nerki,mierzone współczynnikiem MDRD) w dniach 7, 30, oraz miesiącach 3, 6, 12, 24, 36 i 60 po przeszczepie) z pakietu PBImisc install.packages("PBImisc") library(PBImisc) View(kidney) View(eden) a następnie określ: a) minimalny wiek pacjenta dawcy b) średni i maksymalny wiek biorcy c) liczbę wszystkich biorców którzy zapadli po przeszczepie na cukrzycę d) w zależności od zastosowanej terapii wykonaj sortowanie (od min do max) po wieku pacjentów biorców e) określ liczbę mężczyzn mieszkających w Londynie, którzy w obszarze mania posiadają wskaźnik (1.0 - 2.0) f) kobiety o wskaźniku depresji powyżej 2.0 posegreguj w zależności od lat ich edukacji g) określ średni poziom wskaźników depresji u kobiet i mężczyzn h) Sprawdź ile pacjentów przeszło terapię: tc, ca, cm Grafika Zapoznaj się z podstawowymi funkcjami graficznymi pakietu ggplot2 (http://ggplot2.org/resources/2007-vanderbilt.pdf) Zadanie 2 a) Sprawdź (przedstaw graficznie) jak zmieniała się w czasie funkcja nerki po przeszczepie mierzona w MDRD, jakie czynniki wpływały na sprawność nerki? b) Dla zbioru eden, należy pokazać zróżnicowanie poziomu objawów psychopatologicznych (obszary: mania, depresja, symptomy pozytywne i negatywne), na wykresie przedstaw jakie czynniki wpływają na poziom objawów psychopatologicznych. Pętle for (a in 1:5) { cat("wartość zmienne a= ", a , "n") } # pętla losująca wartości akcji dla losowej liczby firm liczbaFirm <- round(runif(n = 1, min = 1, max = 20)) # dla każdej firmy losujemy wartość akcji for (i in 1:liczbaFirm) { cat("Akcja ", i," jej cena to", runif(n = 1, min=0, max=5000), "PLN\n") } # pętla wypisująca liczbę różnych wartości i listująca te wartości dla każdej kolumny kolumny <- colnames(kidney) for (i in kolumny) { wartosciWKolumnie <- unique(as.character(kidney[,i])) cat("Kolumna", i, "\n") cat(" ", length(wartosciWKolumnie), "różnych wartości:", wartosciWKolumnie, "\n") } Zadanie 3 Napisz pętlę, która dla każdego wiersza z tabeli eden wypisze obliczy liczbę dzieci dla każdego z miast w którym mieszkają pacjenci Warunki Zapoznaj się z składnią instrukcji warunkowej if oraz switch na podstawie literatury „Przewodnik po pakiecie R” P. Biecek (http://cran.r-project.org/doc/contrib/Biecek-R-basics.pdf) Zadanie 4 Napisz instrukcję warunkową, która dla pacjentów (tabela eden) o poziomie objawów depresji <1 wypisze przypadek lekki, a dla >2 przypadek ciężki, a w przedziale 1-2 wypisze średni. Taki efekt można uzyskać stosując dwie instrukcje if() lub korzystając z funkcji switch() Napisz pętlę i instrukcję warunkową które obliczą poszczególne sumy kolumn MDRD7 - MDRD60 (uwaga uwzględnić tylko te wyniki które wartości parametru sprawności nerek >45)