Есть ли способ построить группы, которые установлены из R groupby? - PullRequest
1 голос
/ 06 апреля 2020

У меня есть фрейм данных с повторяющимися именами в одном столбце и рассчитанными значениями в других столбцах. Есть ли способ сгруппировать по ИМЯ и построить все V1 (или V2) для указанной группы c? Или есть способ создать меньшие DF для каждого NAME (для этого NAME будут только соответствующие значения V1 и V2)?

Начальный DF:

NAME      V1        V2
ctr        5         0.2
ctr        6         1.1
ctr        8         2.3
pd        25         0.7
pd        11         2.1
axs       12         0.8
axs       43         2.4
axs        2         1.1

Пример меньшего DF: ctr DF будет просто

V1        V2
 5        0.2
 6        1.1
 8        2.3

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Если вам нужен только один график, вы можете установить подмножество своего набора данных перед построением графика:

library(ggplot2)

ggplot(data = subset(DF, NAME == "ctr"), aes(x = V1, y = V2))+
    geom_point()

, если вы хотите иметь три графика по одному для каждой группы, вы можете получить его, предъявив иск facet_wrap:

library(ggplot2)

ggplot(data = DF, aes(x = V1, y = V2))+
    geom_point()+
    facet_wrap(~NAME)
1 голос
/ 06 апреля 2020

Мы можем использовать split в list data.frames и извлечь его с помощью [[ или $

lst1 <- split(df1[-1], df1$NAME)
lst1$ctr

Мы также можем сделать это с filter

library(dplyr)
library(ggplot2)
df1 %>%
     filter(NAME == 'ctr') %>%
     ggplot(aes(x = V1, y = V2)) +
            geom_point()

данные

df1 <- structure(list(NAME = c("ctr", "ctr", "ctr", "pd", "pd", "axs", 
"axs", "axs"), V1 = c(5L, 6L, 8L, 25L, 11L, 12L, 43L, 2L), V2 = c(0.2, 
1.1, 2.3, 0.7, 2.1, 0.8, 2.4, 1.1)), class = "data.frame", 
row.names = c(NA, 
-8L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...