Я знаю, что такого рода вопросы задавались ранее, но я не смог применить предложенные решения к моему набору данных ...
У меня есть действительно простая функция для сбора различных данных в больший размер (около 7 столбцов и 150 000 строк). Моя задача - сохранить собранные данные. Действительно, у меня есть несколько строковых символов, а также цифры и время.
Location Date Creneau Ordre Name Qte_conso Start End
case 2 18/12/2018 6 1 Caligula Time 0 06:28:35 06:28:35
case 2 18/12/2018 6 2 Lolita Forest 500 07:52:34 08:02:02
case 2 18/12/2018 6 3 Break The Wall 501 08:05:43 08:10:04
case 2 18/12/2018 6 4 Lolita Forest 0 08:10:55 08:11:35
case 2 18/12/2018 6 5 I Know you 501 08:12:43 08:24:26
case 2 18/12/2018 6 6 Caligula Time 0 08:24:39 08:24:39
case 2 18/12/2018 6 7 Aroma 421 08:34:37 08:40:56
case 2 18/12/2018 6 8 Polenta 0 08:41:44 08:41:45
case 2 18/12/2018 6 9 Aroma 79 08:41:49 08:45:43
case 2 18/12/2018 6 10 Polenta 500 08:46:54 08:58:23
case 2 18/12/2018 9 1 I Know you 501 09:03:09 09:11:17
case 2 18/12/2018 9 2 Polenta 500 09:12:03 09:25:34
case 2 18/12/2018 9 3 Decided 500 09:28:15 09:47:34
case 2 18/12/2018 9 4 Lolita Forest 500 09:48:05 09:56:49
case 2 18/12/2018 9 5 Diamond Free 500 09:57:07 10:07:23
time.interval
0 secs
568 secs
261 secs
40 secs
703 secs
0 secs
379 secs
1 secs
234 secs
689 secs
488 secs
811 secs
1159 secs
524 secs
616 secs
В каждой строке указывается, в какое время и сколько съели животное. Затем у меня есть несколько рядов для уникального животного.
У меня есть следующий код для сбора необходимой мне информации (это должен быть более эффективный способ сделать это, но, по крайней мере, это работает, я проверил, напечатав вывод на нескольких людях):
names <- unique(dataset$Nom)
dates <- unique(dataset$Date)
crnx <- unique(dataset$Creneau)
for (name in names){
for (date in dates) {
for (crn in crnx) {
res <- subset(dataset, Nom==name & Date==date & Creneau==crn)
nbPassage <- nrow(res)
qteMax <- max(res$Qte_conso)
qteMin <- min(res$Qte_conso)
qteTot <- sum(res$Qte_conso)
qteMoy <- mean(res$Qte_conso)
tempsMin <- min(res$interval)
tempsMax <- max(res$interval)
tempsTot <- sum(res$interval)
tempsMoy <- mean(res$interval)
}
}
}
Я попытался поместить все эти данные в пустой кадр данных, инициализированный следующим образом:
df <- data.frame(Nom=character(),
Date=character(),
Case=character(),
Creneau=numeric(),
Passage=numeric() ,
Qte_min=numeric(),
Qte_max=numeric(),
Qte_tot=numeric(),
Qte_moy=numeric(),
Tps_min=character(),
Tps_max=character(),
Tps_tot=character(),
Tps_moy=character(),
stringsAsFactors=FALSE)
for (name in names){
for (date in dates) {
for (crn in crnx) {
res <- subset(dataset, Nom==name & Date==date & Creneau==crn)
[...]
}
}
df$Nom <- df$Nom + name
df$Date <- df$Date + date
df$Creneau <- df$Creneau + crn
df$Passage <- df$Passage + nbPassage
df$Qte_min <- df$Qte_min + qteMin
df$Qte_max <- df$Qte_max + qteMax
df$Qte_tot <- df$Qte_tot + qteTot
df$Qte_moy <- df$Qte_moy + qteMoy
df$Tps_min <- df$Tps_min + tempsMin
df$Tps_max <- df$Tps_max + tempsMax
df$Tps_tot <- df$Tps_tot + tempsTot
df$Tps_moy <- df$Tps_moy + tempsMoy
}
С этим я получаю Error in df$Nom + name : non-numeric argument to binary operator
Я также пробовал с векторами (я красный, это не очень хорошая практика, но я не знаю, как поступить), зная, сколько строк мне нужно получить, но тогда у меня было integer(0)
для всех числовых однократных и точно таких же сообщений об ошибках для одного, содержащего строки символов.
Я также пытался capture.output
, но у меня только первый элемент.
Конечная цель всего этого - иметь возможность экспортировать новый фрейм данных в файл CSV.
Заранее спасибо тем, кто найдет время прочитать и, возможно, ответит на это. Если вам нужна дополнительная информация, я был бы рад предоставить вам больше элементов.