Начинающий R: Как мне создать сравнительный блокпост, используя два транспонированных набора данных? - PullRequest
0 голосов
/ 12 октября 2019

Отказ от ответственности: я ОЧЕНЬ новичок в R

Итак, у меня есть два набора данных ("fabricH.txt" и "fabricP.txt"), которые сравнивают одну и ту же переменную (расширяемость) для двух разных групп населения(ткань). Все, что мне нужно, это сделать один график с одним боксплотом для каждого. Проблема заключается в том, что наборы данных транспонируются (т.е. 1 строка с n числом столбцов). Это сделано специально, так как мы должны это выяснить, используя код, а не изменяя вручную файлы набора данных.

Проблема:

  • , когда я использую функцию t (), данные считываются транспонированными, но функция boxplot () не позволяет мне добавлять две таблицы данных, только однувовремя.

Инструкции по назначению следующие:

"Данные о растяжимости (100%) при 100 г / см как для высококачественной ткани (H), так и для ткани низкого качества(P) образцы приведены в fabricH.txt и fabricP.txt "

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

Данные:
fabricH.txt:

1.2 .9 .7 1.0 1.7 1.7 1.1 .9 1.7 1.9 1.3 2.1 1.6 1.8 1.4 1.3 1.9 1.6 .8 2.0 1.7 1.6 2.3 2.0 

fabricP.txt:

1.6 1.5 1.1 2.1 1.5 1.3 1.0 2.6 

чтение файлов TXT в файлтранспонированная матрица:

fabricH<-t(read.table("fabricH.txt",header=F))  
fabricP<-t(read.table("fabricP.txt",header=F)) 

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

boxplot(fabricH, fabricP)

Я получаю ошибку:

"Ошибкав dimnames (x) [[1 + use.cols]]: на уровне 2 такого индекса нет. Дополнительно: предупреждающее сообщение: In if (use.cols) {: условие имеет длину> 1 и будет использоваться только первый элемент"

~ Я предполагаю, что это связано с матрицами размером [1: N, 1]. Но не знаю, как бы я изменил свои матрицы, чтобы это работало.

~ Мне также не удалось найти решение для этого уровня кодирования (очень базовое).

1 Ответ

0 голосов
/ 12 октября 2019

Простой способ решения этой проблемы - поместить все ваши данные в один фрейм данных с двумя столбцами. Один столбец для значений и второй столбец для источника / имени. Оказавшись там, вы можете построить значение против имени.

#sample data
fabricH<-c(1.2, .9, .7, 1.0, 1.7, 1.7, 1.1, .9, 1.7, 1.9, 1.3, 2.1, 1.6, 1.8, 1.4, 1.3, 1.9, 1.6, .8, 2.0, 1.7, 1.6, 2.3, 2.0)
fabricP<-c(1.6, 1.5, 1.1, 2.1, 1.5, 1.3, 1.0, 2.6)

#with the sample data...
#make a data frame with two columns named: "name" and "value"
fabricH_df<-data.frame(name="fabricH", value=fabricH)
fabricP_df<-data.frame(name="fabricP", value=fabricP)

#combine separate data frames into one large dataframe
combined<-rbind(fabricH_df, fabricP_df)

#plot the values grouped by "name"
boxplot(value ~ name, data=combined)
...