我有一个数据框,看起来像这样:
df <- read.table(text = "ID Date Freq Gender Trt month Group
15 A1 2019-01-29 1 female 1 1 G1
16 A1 2019-04-27 10 female 1 4 G1
17 A1 2019-04-27 10 female 1 4 G1
18 A1 2019-04-29 2 female 1 4 G1
19 A1 2019-04-29 12 female 1 4 G1
20 A1 2019-10-09 6 female 1 10 G1
21 A1 2019-12-26 NA female 1 12 G1
22 A1 2019-12-26 NA female 1 12 G1
27 A1 2019-02-19 5 female 1 2 G1
28 A2 2019-02-19 15 male 0 2 G3
37 A3 2019-01-30 NA female 0 1 G2
38 A3 2019-01-30 9 female 0 1 G2
39 A3 2019-02-15 11 female 0 2 G2
40 A3 2019-02-15 10 female 0 2 G2
41 A3 2019-03-16 1 female 0 3 G2
42 A3 2019-04-01 1 female 0 4 G2
43 A3 2019-04-01 3 female 0 4 G2
44 A3 2019-04-22 2 female 0 4 G2
45 A3 2019-05-25 4 female 0 5 G2
46 A3 2019-05-29 4 female 0 5 G2
47 A3 2019-06-06 19 female 0 6 G2")我想逐月展示不同组别G1-6和trt的趋势。例如,xbar上有1-12个月的图表,ybar上有按G分组的该月人数的计数(因此,在图表上为G1、G2等绘制不同颜色的趋势线,显示该月的组数是如何下降或上升的),或者甚至是另一种形式的描述性统计数据将会很有帮助。但我想不出如何让任何图形工作。我已经为年份制作了单独的专栏,并尝试为组制作专栏,但它就是不能绘制图表?以下是我所做的和尝试的:
df$Date <- as.Date(df$Date)
dfDates <- data.frame(year = as.numeric(format(df$Date, format = "%Y")), month = as.numeric(format(df$Date, format = "%m")))
dfDates <- cbind(df,dfDates)
dfG <- df %>%
pivot_longer(cols = c("G1", "G2", "G3", "G4","G5","G6"), names_to = "Group", names_ptypes = list(Group = factor()), values_to = "Value") %>%
filter(Value == 1) %>%
select(-Value)
ggplot(dfG, aes(factor(month), sum(Group), group = Group, Trt)) +
geom_line(size = 1, alpha = 0.8) +
geom_point(size = 2) +
scale_color_brewer(name = "Name", palette = "Set1")+xlab("month") + ylab("trend")
ggplot(dfG, aes(factor(month), Group)) +
geom_line(size = 1, alpha = 0.8) +
geom_point(size = 2) +
scale_color_brewer(name = "name", palette = "Set1")+xlab("month") + ylab("trend")我非常感谢你的时间和帮助,谢谢你。
发布于 2021-11-08 19:41:18
最简单的方法是首先创建摘要,然后在管道中或首先在您的环境中定义一个新对象将其传递给ggplot()。(我更喜欢)
library(tidyverse)
df2 <-
df %>%
mutate(month = factor(month.abb[month], levels = month.abb)) %>%
group_by(month, Group) %>%
summarise(count = max(row_number()))
#> `summarise()` has grouped output by 'month'. You can override using the `.groups` argument.
ggplot(df2, aes(month, count)) +
geom_line(aes(color = Group, group = Group), size = 1, alpha = 0.8)

https://stackoverflow.com/questions/69887187
复制相似问题