从 R 中的 CSV 中读取数据并在箱线图中可视化
Read data from CSV in R and visualize it in a Boxplot
我想从 csv 文件中读取 R 中的一些数据,然后以箱线图的形式可视化。
我总是收到一些数据不是数字的错误: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 文件的方式:
您有 semi-colon 分隔的数据,因此使用 read.csv2
或 read.csv
和 semi-colon 作为分隔符。假设不需要第一个点,我们可以删除它们并将数据转换为数字。
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
,不确定那里的问题。
我想从 csv 文件中读取 R 中的一些数据,然后以箱线图的形式可视化。
我总是收到一些数据不是数字的错误: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 文件的方式:
您有 semi-colon 分隔的数据,因此使用 read.csv2
或 read.csv
和 semi-colon 作为分隔符。假设不需要第一个点,我们可以删除它们并将数据转换为数字。
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
,不确定那里的问题。