Как построить подмножество фрейма данных в R? - PullRequest
14 голосов
/ 28 ноября 2011

Есть ли простой способ сделать это в R:

plot(var1,var2, for all observations in the data frame where var3 < 155)

Это возможно путем создания новых данных newdata <- data[which( data$var3 < 155),], но тогда мне нужно переопределить все переменные newvar1 <- newdata$var1 и т. Д.

Ответы [ 4 ]

25 голосов
/ 28 ноября 2011

with(dfr[dfr$var3 < 155,], plot(var1, var2)) должен сделать свое дело.

Редактировать в отношении нескольких условий:

with(dfr[(dfr$var3 < 155) & (dfr$var4 > 27),], plot(var1, var2))
10 голосов
/ 28 ноября 2011

Самый простой вариант:

plot(var1[var3<155],var2[var3<155])

Это не выглядит хорошо из-за избыточности кода, но вполне подходит для быстрого n грязного взлома.

4 голосов
/ 28 ноября 2011

Вот как бы я это сделал, чтобы получить ограничение var4:

dfr<-data.frame(var1=rnorm(100), var2=rnorm(100), var3=rnorm(100, 160, 10), var4=rnorm(100, 27, 6))
plot( subset( dfr, var3 < 155 & var4 > 27, select = c( var1, var2 ) ) )

Rgds, Rainer

0 голосов
/ 03 сентября 2016

Этот кусок должен выполнить работу:

plot(var2 ~ var1, data=subset(dataframe, var3 < 150))

Мои наилучшие пожелания.

Как это работает:

  1. Fisrt, мы делаем выбор, используя подмножествофункция.Можно использовать и другие возможности, например, subset (dataframe, var4 == "some" & var5> 10).Оператор " & " может использоваться для выбора всех "некоторых" и свыше 10. Также оператор " | " может использоваться для выбора "некоторых" или"более 10".
  2. Следующим шагом является построение графика результатов подмножества с использованием оператора тильды (~), который просто подразумевает формулу, в данном случае var.response ~var.independet.Конечно, это не формула, но отлично подходит для этого случая.
...