2015-03-17 2 views
1

Это немного странный запрос, я не знаю, существует ли функция, вероятно, существует, но я надеялся, что это возможно. В принципе, у меня есть целый ряд переменных, которые я ищу на то, чтобы дать результат и поэтому мои типичные данные будут выглядеть нижеГрафическое отображение в R - объединяющих факторах

Sample Daylength Expt Line Protein 

1   LD  L  K  100 
2   SD  S  R  150 
3   LD  L  R  200 
4   SD  S  K  120 
5   LD  L  K  95 
6   SD  S  R  160 
7   LD  L  R  195 
8   SD  S  K  130 

Так у меня есть 3 зависимые переменные (световой день, эксп, линия) и 1 результат переменная белка. Тем не менее, я хотел бы, чтобы смотреть на в графике сравнения уровней белка, показывающие полосы для L и экспериментов S

Пример кода, который я использовал бы нарисовать гистограмму с ggplot2 является:

ggplot(data=results, aes(x=daylength, y=protein, fill=line)) + geom_bar(stat="identity", position=position_dodge()) 

, и это даст мне график, показывающий результаты экспериментов с LD и SD с линиями, предлагающими отдельную серию. Однако это не учитывает мой третий фактор, expt.

Обычно в Excel я мог бы манипулировать таблицей, чтобы дать результаты для LD/L, LD/S, SD/L и SD/S как отдельные заголовки и создать граф, используя их как факторы X, однако это может быть тяжелым, особенно если я собираюсь переписать таблицу, сохранить ее и запустить ее в R каждый раз. Я искал, был ли достаточно простой метод, чтобы либо манипулировать таблицей в R, чтобы группировать все, как показано ниже, с помощью нескольких команд или объединить два фактора, чтобы рисовать график каждый раз, особенно потому, что в некоторых случаях мне может быть интересно в сочетании различных факторов.

Sample Daylength/Expt Line Protein 

1   LD/L   K  100 
2   SD/S   R  150 
3   LD/L   R  200 
4   SD/S   K  120 
5   LD/L   K  95 
6   SD/S   R  160 
7   LD/L   R  195 
8   SD/S   K  130 

ответ

1

Вы можете использовать оператор взаимодействия : на факторах:

library(ggplot2) 
head(CO2) # using builtin data 
# Plant Type Treatment conc uptake 
#1 Qn1 Quebec nonchilled 95 16.0 
#2 Qn1 Quebec nonchilled 175 30.4 
#3 Qn1 Quebec nonchilled 250 34.8 
#4 Qn1 Quebec nonchilled 350 37.2 
#5 Qn1 Quebec nonchilled 500 35.3 
#6 Qn1 Quebec nonchilled 675 39.2 
qplot(conc, uptake, color=Type:Treatment, data=CO2) 
+0

Спасибо, что прекрасно. – LACollins

0

Вы можете создать столбец Продолжительность светового дня/эксп с помощью пасты:

dl_ex <- paste(results$Daylength, results$Expt, sep='/') 

(Используйте as.character на колоннах, если R жалуется на факторы или дает странные числовые результаты)

, а затем добавить его к набору данных

results2 <- results[, -c("Daylength", "Expt")] 
results2$DE <- dl_ex 

Однако, если вы хотите сгруппировать свой данные по некоторым атрибутам вы должны посмотреть в пакет plyr или sqldf, если вы знакомы с синтаксисом SQL.

+0

Спасибо, что полезный обходной путь, что я буду иметь в виду – LACollins