Считывает данные из CSV в R и визуализирует их в Boxplot

#r #dataframe #csv #plot #boxplot

#r #dataframe #csv #график #boxplot

Вопрос:

Я хочу прочитать некоторые данные в R из файла csv, а затем визуализировать в виде boxplot. Я всегда получаю сообщение об ошибке, что некоторые данные не являются числовыми : Error in mkRespMod(fr, REML = REMLpass) : response must be numeric .

Это мой код на R:

 library(tidyverse)
library(lme4)
library(emmeans)
library(multcomp)


# set vector with colors and label
COL <- c("Fallow" = "slategray", "Mustard" = "red3" , "Mix4" = "orchid3", "Mix12"= "orange4")
SHP <- c("Fallow"=21,"Mustard"=22,"Mix4"=23, "Mix12"=24)


# generate data frame with original data
data <- read.csv("C:\Users\alex\data.csv", header=T, sep = ';')



datalm_NEE <- lmer(NEE ~ cc_variant   (1|Date), data=data)
df_NEE <- cld(emmeans(lm_NEE, specs ="cc_variant"), Letters=letters, sort=FALSE)

# Plot for BFS
  fig1 <- ggplot(data, aes(x= cc_variant, y=NEE, fill= cc_variant)) 
  geom_boxplot() 
  scale_fill_manual(values = COL, guide=FALSE) 
  geom_text(data= df_NEE ,aes(y=-600,x=cc_variant, label=.group)) 
  labs(x="Catch crop variant",  y=expression("NEE (mg CO"[2]~"- C"~m^{-2}~h^{-1}~")"), fill="") 
  theme_myBW

ggsave("Fig1.png", width = 84, height = 70, units = "mm", dpi = 600)
  

Это мой фрейм данных:

 cc_variant       Date        NEE
1      Fallow 2016-10-18   52.31861
2      Fallow 2016-10-19   36.75274
3      Fallow 2016-10-24   34.59082
4        Mix4 2016-10-18 -516.86837
5       Mix12 2016-10-18 -617.11000
6     Mustard 2016-10-18 -182.24568
7        Mix4 2016-10-19 -102.63776
8       Mix12 2016-10-19 -431.55887
9     Mustard 2016-10-19 -139.04121
10    Mustard 2016-10-24 -114.09939
11      Mix12 2016-10-24 -400.21260
12       Mix4 2016-10-24 -175.33208
  

И вот как я создаю свой csv-файл:

данные

Комментарии:

1. Похоже, что значения в NEE столбце содержат несколько . символов, в результате чего этот столбец считывается как символьный, а не числовой.

2. @neilfws спасибо за ваш ответ, я просто копирую его значение из выходных данных R studio, как они показаны, я постараюсь удалить точку и дам вам знать

3. @neilfws на самом деле нет . в значениях это отображается только в таблице, но когда вы нажимаете на него, оно исчезает

4. Что class(data$NEE) говорит?

5. @neilfws [1] «символ»

Ответ №1:

У вас есть данные, разделенные точкой с запятой, поэтому используйте read.csv2 или read.csv с точкой с запятой в качестве разделителя. Предполагая, что первая точка не нужна, мы можем удалить их и преобразовать данные в числовые.

 data <- read.csv2('data.csv')
data$NEE <- as.numeric(sub('.', '', data$NEE, fixed = TRUE))
lm_NEE <- lmer(NEE ~ cc_variant   (1|Date), data=data)
  

Это исправляет первый шаг, но на следующем шаге он завершается неудачей cld , не уверен в проблеме.