[英]create a dataframe for multiple line plot for ggplot R
這個問題是關於為ggplot線圖排列數據。 我一直在用excel手動執行此操作,我想找到一種使用r執行此操作的方法。
我已經查看了這篇文章,它類似於ggplot - R 的排列數據幀格式
我有一個看起來像這樣的數據集:
] 1
我想將它轉換為一個數據幀,該數據幀分為組 (N,A,G) 和年齡段以及每個age_group
的比例。
我試圖實現的一個例子:
感謝你的幫助。
數據:
structure(list(ID = 1:10, Age = c(9L, 16L, 12L, 13L, 29L, 24L,
23L, 24L, 16L, 40L), Sex = structure(c(1L, 1L, 2L, 1L, 1L, 2L,
2L, 1L, 1L, 1L), .Label = c("F", "M"), class = "factor"), Age_group =
c(1L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 4L), N = c(1L, 1L, 1L, 1L, 0L,
0L, 0L, 0L, 0L, 0L), A = c(0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L,
0L), G = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L)), class = "data.frame",
row.names = c(NA,
-10L))
我們可以使用pivot_longer
轉為“long”格式,然后在“Age”上創建一個帶有cut
的分組變量,並獲得“n”和“proportion”的sum
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = N:G, names_to = 'group', values_to = 'n') %>%
group_by(Age_group_new = cut(Age, breaks = c(-Inf, 0, seq(10, 70, by = 10), 100, Inf)), group) %>%
summarise(n = sum(n)) %>%
group_by(Age_group_new) %>%
mutate(proportion = n/sum(n),
proportion = replace(proportion, is.nan(proportion), 0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.