ggplot: несколько боксов в одном не будут работать - PullRequest
0 голосов
/ 23 января 2019

У меня есть фрейм данных, содержащий концентрации 7 фталатных метаболитов (MEHP HMEHP OMEHP MEP MBZP MIBP MNBP), а также один столбец, содержащий данные о населении (матери, отцы, дети).Я хочу создать один график с концентрациями фталатных метаболитов на оси х, а внутри графика - три коробчатых графика на метаболит, показывающие концентрации для матерей, отцов и детей.Данные выглядят так:

  MEHP HMEHP OMEHP MEP MBZP MIBP MNBP population
1   27    60    34  28   23   46   39    mothers
2    1   2.1   2.1 8.5  1.3   14  8.6    mothers
3  2.8    11   5.3  16  1.8   17   21    mothers
4  3.9    63    35 120   14   93  120    mothers
5  4.6    19   9.2 9.8  3.2   25   22    mothers
6  1.2   6.2   4.9  34  1.8   17  9.2    mothers

Сначала я растопил данные, а затем попытался построить их

df.m <- melt(data2, id.var = "population")
df.m

  population variable value
1    mothers     MEHP    27
2    mothers     MEHP     1
3    mothers     MEHP   2.8
4    mothers     MEHP   3.9
5    mothers     MEHP   4.6
6    mothers     MEHP   1.2

ggplot(data=df.m, aes(x=variable, y=log(value) +  geom_boxplot(aes(fill=population))  

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

Error: unexpected symbol in:
"ggplot(data=df.m, aes(x=variable, y=log(value) + geom_boxplot(aes(fill=population))   
ggplot"

И я не знаю, почему это не работает.Спасибо!

ОБНОВЛЕНИЕ добавления)) после того, как у = значение сработало.К сожалению, это тогда дало мне ошибку

> ggplot(data=df.m, aes(x=variable, y=log(value))) +  geom_boxplot(aes(fill=population))
Error in Math.factor(value) : ‘log’ not meaningful for factors

> str(df.m)
'data.frame':   2499 obs. of  3 variables:
 $ population: Factor w/ 3 levels "children","fathers",..: 3 3 3 3 3 3 3 3 3  3 ...
 $ variable  : Factor w/ 7 levels "MEHP","HMEHP",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value     : Factor w/ 317 levels "#N/A","0.25",..: 58 27 53 68 77 29 44     118 38 115 .

Как мне решить эту проблему?

ОБНОВЛЕНИЕ

data2 <- read.csv2("190123_phthalates_population.csv", header=T,  stringsAsFactors=F, sep=";")
head(data2)
str(data2)
> str(data2)
'data.frame':   357 obs. of  8 variables:
 $ MEHP      : chr  "27" "1" "2.8" "3.9" ...
 $ HMEHP     : chr  "60" "2.1" "11" "63" ...
 $ OMEHP     : chr  "34" "2.1" "5.3" "35" ...
 $ MEP       : chr  "28" "8.5" "16" "120" ...
 $ MBZP      : chr  "23" "1.3" "1.8" "14" ...
 $ MIBP      : chr  "46" "14" "17" "93" ...
 $ MNBP      : chr  "39" "8.6" "21" "120" ...
 $ population: chr  "mothers" "mothers" "mothers" "mothers" ...

df.m <- melt(data2, id.var = "population")
head(df.m)
  population variable value
1    mothers     MEHP    27
2    mothers     MEHP     1
3    mothers     MEHP   2.8
4    mothers     MEHP   3.9
5    mothers     MEHP   4.6
6    mothers     MEHP   1.2
str(df.m)
'data.frame':   2499 obs. of  3 variables:
 $ population: chr  "mothers" "mothers" "mothers" "mothers" ...
 $ variable  : Factor w/ 7 levels "MEHP","HMEHP",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value     : Factor w/ 317 levels "#N/A","0.25",..: 58 27 53 68 77 29 44     118 38 115 ...

as.numeric(as.character(df.m$value))
Warning message:
NAs introduced by coercion 
na.omit(df.m)
> str(df.m)
'data.frame':   2499 obs. of  3 variables:
 $ population: chr  "mothers" "mothers" "mothers" "mothers" ...
 $ variable  : Factor w/ 7 levels "MEHP","HMEHP",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value     : Factor w/ 317 levels "#N/A","0.25",..: 58 27 53 68 77 29 44 118 38 115 ...
ggplot(data=df.m, aes(x=variable, y=(value)) +   geom_boxplot(aes(fill=population)))

Error: Mapping should be created with `aes() or `aes_()`.

Это все еще не работает

ОБНОВЛЕНИЕэто сработало, изменив значения в файле Excel с общих на числовые, сохранив их как csv и загрузив снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...