2015-02-09 2 views
0

Что я хочу сделать, так это применить функцию графика только к определенному выбору записей в наборе данных. Скажем, у меня есть столбец длины (числовой), столбец массы тела (числовой) и столбец пола (M или F) (какого-либо животного). Я хочу рассчитать длину и массу, но только для M, так что F не появится на графике. Как мне это сделать?В R, как мне создать сюжет только для одной группы?

+0

скажите, что ваши данные являются рамками данных с полом в качестве символьной переменной, которая принимает значения «M» и «F». 'plot (dataset [dataset $ sex ==" M ",] $ length, dataset [dataset $ sex ==" M ",] $ mass)' будет достигать того, чего вы хотите. в общем, вы должны прочитать о подмножестве в R http://adv-r.had.co.nz/Subsetting.html – bjoseph

ответ

0

Есть несколько способов подмножества dataframe:

mydata <- data.frame(
length = rnorm(100 , 100 , 20), 
mass = rnorm(100 , 80,5), 
sex = sample(factor(c("male", "female")) , 100 , replace=TRUE) 
) 

with(mydata[ mydata$sex=="male", ] , plot(mass , length )) 

# or 

with(subset(mydata , sex=="male") , plot(mass, length)) 

# or make a new dataset 

mydata2 <- mydata[ mydata$sex=="male" , ] 

plot(mydata2$mass , mydata2$length) 

В каждом случае mydata$sex=="male" делает вектор TRUE и FALSE длиной nrow(mydata), который используется, чтобы выбрать соответствующие строки в dataframe как это:

logical_vec_to_select <- mydata$sex=="male" 
mydata[ logical_vec_to_select , ] 

И та же техника может использоваться для подмножества столбцов матрицы данных или матрицы.