У меня есть фрейм данных, содержащий концентрации 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 и загрузив снова.