2016-07-27 3 views
0

Мой вопрос может быть элементарным, но в течение последних нескольких часов у него много головной боли, поэтому любая помощь будет очень оценена.Постройте другую строку для каждой строки кадра данных в R

У меня есть кадр данных с ~ 150 столбцами и ~ 1000 строк. Каждая ячейка [i, j] фрейма данных содержит числовое значение, кроме значений в первом столбце кадра данных, которые содержат уникальный идентификатор (уникальный для каждой строки кадра данных)

Я хотел бы для рисования диаграммы, где каждая строка кадра данных будет построена на отдельной диаграмме (графике) сама по себе (т.е. для каждой строки будет создан график с собственной осью со значениями строки, построенной на y- ось и имена столбцов фрейма данных в виде меток на оси x). Затем каждая из этих отдельных диаграмм будет расположена ниже предыдущей.

Например, если предположить, что кадр данных является следующее:

Jan = c(2, 3, 5) 
Feb = c(8, 9, 12) 
Mar = c(2.2, 7, 3) 
Apr= c(1, 3.7, 23) 
df = data.frame(Jan, Feb, Mar, Apr) 

тогда моя цель будет иметь 3 участков друг под другом, каждый из которых содержит прямую, проходящую через 4 точки, соответствующие значениям каждого из 4 месяцев (январь, февраль, март, апрель). Например, у 1-го сюжета будет строка, проходящая от значений [2, янв.], [8, фев.], [2.2, Мар] и [1.0, Апр]. Аналогично для следующих двух графиков.

Может ли кто-нибудь указать мне правильное направление с некоторыми подсказками о том, как достичь моих целей?

спасибо!

+0

хотя 'plot' создает новый сюжет каждый раз, когда он вызывается, если вы звоните' segment' это добавит на отрезке. или вы можете вызвать 'points' с переменной x и найти настройку для соединения точек – Adam

ответ

2

Решение проблемы с использованием melt пакета reshape2 на вашем примере.
Может быть сложнее иметь 1000 + граней (строк) и 150 + x-тиков (столбцов).

enter image description here

df = cbind(df, row_number = seq(1, 3)) 

df_melt = melt(df, id = "row_number") 

ggplot(df_melt, aes(x = variable, y = value, group = row_number)) + 
geom_line(stat = "identity") + facet_wrap(~row_number, ncol = 1, scales = "free") 
+0

Блестящее решение bVa! Большое вам спасибо за вашу большую помощь! Вы полностью прибили его! – dimly

Смежные вопросы