2014-04-18 10 views
5

Próbuję wykonać następujące czynności: Jestem w dużej funkcji, którą muszę napisać. W ostatniej części muszę obliczyć średnią z kolumny w ramce danych, a która jest zmienną kolumną, którą muszę obliczyć, średnia z podana jest jako argument do funkcji. Jestem całkowitym początkującym użytkownikiem R i całkowicie się zagubiłem. Dzięki.R Potrzebujesz pomocy, aby obliczyć średnią z kolumny w ramce danych

Odpowiedz

19

Myślę, że pytasz, jak obliczyć średnią zmiennej w ramce danych, biorąc pod uwagę nazwę kolumny. Istnieją dwa podejścia do typowych ten sposób jeden z [[ indeksowania i inne indeksowanie z [:

data(iris) 
mean(iris[["Petal.Length"]]) 
# [1] 3.758 
mean(iris[,"Petal.Length"]) 
# [1] 3.758 
mean(iris[["Sepal.Width"]]) 
# [1] 3.057333 
mean(iris[,"Sepal.Width"]) 
# [1] 3.057333 
6

którekolwiek z poniższych kryteriów powinny pracować !!

df <- data.frame(x=1:3,y=4:6) 

mean(df$x) 
mean(df[,1]) 
mean(df[["x"]]) 
2

myślę czego są poproszony (a może zadając sobie?) Jest przyjmować wartość znaku, który odpowiada nazwie kolumny w danym dataframe (ewentualnie również podane jako znak). Tu są dwie sztuczki. Większość ludzi uczy się wyodrębniania kolumn za pomocą operatora "$", a to nie zadziała w funkcji, jeśli funkcja zostanie przekazana przez vecor postaci. Jeśli funkcja ma także przyjąć argumentu znak, a następnie trzeba będzie użyć funkcji get także:

df1 <- data.frame(a=1:10, b=11:20) 
mean_col <- function(dfrm, col) mean(get(dfrm)[[ col ]]) 
mean_col("df1", "b") 
# [1] 15.5 

Istnieje rodzaj semantycznego granicy między zwykłych przedmiotów, takich jak wektory postaci i przedmiotów językowych, takich jak nazwy obiektów . Funkcja get jest jedną z funkcji, która pozwala "promować" wartości znaków do oceny poziomu języka. Funkcja "$" NIE oceni jej argumentów w funkcji, więc musisz użyć "[". "$" jest użyteczne tylko na poziomie konsoli i należy go całkowicie unikać w funkcjach.

1

Załóżmy, że masz ramkę danych (słownie df) z kolumny "x" i "y" można znaleźć na myśli kolumny (x lub y), używając:

jakości wyników z użyciem średnią() funkcja

z<-mean(df$x) 

jakości wyników z użyciem nazwy kolumnowej (powiedzmy x), zmienna pomocą attach() funkcji

attach(df) 
mean(x) 

Po zakończeniu można nazwać detach() usunąć „x”

detach() 

jakości wyników z użyciem with() funkcja, pozwala użyć kolumny ramki danych jako odrębne zmiennych.

z<-with(df,mean(x)) 
0

Zastosowanie summarise w pakiecie dplyr:

library(dplyr) 
summarise(df, Average = mean(col_name, na.rm = T)) 

uwaga: dplyr obsługuje zarówno summarise i summarize.

3

jeśli twoja kolumna zawiera jakąś wartość, którą chcesz zaniedbać.to pomoże Ci

Powiązane problemy