Объедините два списка, чтобы получить фактор двух уровней
У меня есть два списка как так:
t1.visit.attendance
[1] 77 74 71 62 59 56 55
t2.visit.attendance
[1] 37 34 33 31 27 26 24
Я хочу сделать фактор, с уровнями t1.visit.attendance и t2.visit.attendance. Обратите внимание: t1 и t2 - два разных типа лечения.
Затем я хочу построить точечный график данных против чисел от 1 до 7 (которые соответствуют n-му посещению) на том же графике, где каждый тип обработки имеет цветовую кодировку.
2 ответа
Решение
Другой способ, просто чтобы показать некоторые варианты, включает в себя reshape2::melt
функция:
t1.visit.attendance <- c(77,74,71,62,59,56,55)
t2.visit.attendance <- c(37,34,33,31,27,26,24)
df <- data.frame(t1 = t1.visit.attendance,
t2 = t2.visit.attendance)
newdf <- melt(df, measure.vars = c("t1", "t2"), variable.name = "visits")
> newdf
visits value
1 t1 77
2 t1 74
3 t1 71
4 t1 62
5 t1 59
6 t1 56
7 t1 55
8 t2 37
9 t2 34
10 t2 33
11 t2 31
12 t2 27
13 t2 26
14 t2 24
Чтобы показать график, отличный от графика рассеяния, вот еще один способ использования dotplot
ggplot(newdf) +
aes(x=value, color = visits) +
geom_dotplot() +
theme(axis.text.y=element_blank())
получая
Библиотека решетки имеет вспомогательную функцию для этого называется make.groups
, Например
t1.visit.attendance<-c(77,74,71,62,59,56,55)
t2.visit.attendance<-c(37,34,33,31,27,26,24)
lattice::make.groups(t1=t1.visit.attendance, t2=t2.visit.attendance)
# data which
# t11 77 t1
# t12 74 t1
# t13 71 t1
# t14 62 t1
# ...
# t26 26 t2
# t27 24 t2