Я не уверен, что линия tata <- data.frame("Aucun","Augmentation","Interception")
делает то, что вы ожидали. Если вы проверите его результат с помощью View(tata)
, вы увидите фрейм данных с одной записью и 3 столбцами, у которых значения - это ваши 3 строки (преобразованные в факторы, как сказал @ s-brunel). Имена столбцов были выведены из их значений (X.Aucun.
и т. Д.). Полагаю, вы скорее хотели создать фрейм данных, чьи имена столбцов являются заданными строками.
Предлагаемый код с комментариями
data <- read.table("R/DATA.csv", sep = ";", header = TRUE, dec = ",")
# The following is useless since first column is already named Date
# colnames(data)[1] <- "Date"
# No need to create your intermediate variables eau and eaucalculee: you can
# do it directly with the data frame columns
data$Eau <- ( 0.000616 * data$Tension - 0.1671) * 100
# No need to create your tata data frame before filling its actual content, you
# can do it directly
tata <- data.frame(
Aucun = mean(data$Eau[
data$Date == levels(factor(data$Date))[1] & data$Traitement == "Aucun"
])
)
tata$Augmentation = your_formula_here
tata$Interception = your_formula_here
Примечание 1 : Самый простой способ ссылки на столбец фрейма данных - это $
, и вам не нужно использовать двойные кавычки. Вы также можете использовать [[
с двойными кавычками (эквивалент), но остерегайтесь [
, который вернет фрейм данных с одним столбцом:
class(data$Date)
# [1] "factor"
class(data[["Date"]])
# [1] "factor"
class(data["Date"])
# [1] "data.frame"
class(data[ , "Date"])
# [1] "factor"
Примечание 2 : Пытаясь перепроектировать ваш код за пределы заданного вами вопроса, возможно, вы хотите вычислить среднее значение Eau для каждой комбинации Date и Traitement. В этом случае я бы предложил вам dplyr
и tidyr
из потрясающего набора пакетов tidyverse
:
# install.packages("tidyverse") # if you don't already have it
library(tidyverse)
data <- data %>%
mutate(Eau = ( 0.000616 * data$Tension - 0.1671) * 100)
tata_vertical <- data %>%
group_by(Date, Traitement) %>%
summarise(mean_eau = mean(eau))
View(tata_vertical)
tata <- tata_vertical %>% spread(Traitement, mean_eau)
View(tata)
Много документации по https://www.tidyverse.org/learn/