2013-08-14 5 views
0

Я новичок в R, и мой довольно тривиальный вопрос вращается вокруг кадра данных с двумя переменными: зарплатой и полу и несколькими тысячами записей. Я хочу изолировать данные, чтобы я мог выполнять основные статистические операции в отношении зарплаты, но для каждого пола конкретно. Я знаю, что для этого должна быть какая-то простая операция, но я не могу найти подходящие функции.Анализ основных данных в r

ответ

1

Пожалуйста, включите воспроизводимый пример и более подробную информацию (что такое «простая операция»?) Вот несколько примеров.

mydata <- data.frame(salary=runif(50,100,200), 
    gender=as.factor(rep(c("male","female"),each=25))) 
with(mydata, tapply(salary, gender, mean)) 

library(doBy) 
summaryBy(salary ~ gender, FUN=c(mean,sd,min,max), data=mydata) 
+0

Большое вам спасибо, я знаю, что мой вопрос был очень мало смысла, но вы точно ответили, на что я надеялся. Я не совсем понял функцию «tapply()» в отношении фрейма данных, но вам удалось дать ему некоторый контекст для меня, даже не понимая, что я прошу. Спасибо огромное ! – user2680851

+1

@ user2680851, что вы делаете, это «агрегирование» ваших данных. Таким образом, другой простой вариант - «совокупность (зарплата ~ пол, mydata, mean)». – A5C1D2H2I1M1N2O1R2T1

+0

@ user2680851: Нельзя понять, как использовать 'tapply' с dataframes. Первый аргумент 'tapply' является атомарным. Резервные данные являются рекурсивными. Функция 'with' создает локальную среду, в которой оцениваются имена столбцов dataframe. Таким образом, один атомный вектор, один вектор факторов и функция перешли в 'tapply' в приведенном выше примере. –

1

Третий вариант, который мне очень нравится, представляет собой пакет plyr. Это разбивает кадры данных (или списки или массивы) на части на основе значения одного из столбцов кадра данных. Затем вы можете выполнить любую операцию, которая вам нравится на фрейме данных. Это называется стратегией «split-apply-comb» для анализа данных. Например, если вы хотите, среднее и стандартное отклонение вашего data колонки для каждой уникальной комбинации заработной платы и пола, вы могли бы сделать что-то вроде

#load the package 
require(plyr) 

#make up some fake data 
gender <- gl(2, 1, 100, labels=c("m", "f")) 
# Note that I'm assuming salary will be a categorical variable 
salary <- gl(5, 1, 100, labels=c("very low", "low", "medium", "high", "very high")) 
data <- runif(100) 

df <- data.frame(gender=gender, salary=salary, data=data) 

# Calculate the mean for each combination of gender and salary 
meanAndSD <- ddply(df, c("gender", "salary"), summarise, meanData=mean(data), sdData=sd(data)) 
print(meanAndSD) 
0

Там часто несколько способов сделать ту же самую задачу в R. Еще один заключается в использовании функции by. Следуя примеру Ремко:

mydata <- data.frame(salary=runif(50,100,200), 
    gender=as.factor(rep(c("male","female"),each=25))) 
by(mydata,mydata$gender,function(x) mean(x$salary)) 
Смежные вопросы