У меня возникла проблема с возможностью подсчета суммы уникальных посадков и количества смертей на размножающихся кодах. Я пытаюсь использовать функцию агрегата для этого.Использование агрегатной функции для расчета уникальных итогов
Goal:
## rowBrCrCode rowPlanted rowPsaDeath rowSurvival
## 1: GL_287 63 24 0
## 2: GL_287 13 7 0
## 3: GL_287 67 26 0
## 4: aCK_227 17 5 0
## 5: aCK_406 20 1 0
into
## rowBrCrCode rowPlanted rowPsaDeath rowSurvival
## 1: GL_287 143 57 0
## 2: aCK_227 17 5 0
## 3: aCK_406 20 1 0
rowSurvival будет рассчитан после этой функции.
Текущий код введите здесь этот код, проблематично код закомментирована (я пишу в R):
library(stringr)
library(data.table)
library(plyr)
test <- fread(file.choose(), header = TRUE, data.table = TRUE)
testRowLength <- nrow(test)
rowBrCrCode <- ""
rowPlanted <- 0
rowPsaDeath <- 0
rowSurvival <- 0
for(i in 1:testRowLength){
if(test$BrCrCode[i] == ""){
test$BrCrCode[i] <- paste("PH_", i, sep = "")
print(paste("hit found, turned nothing into ", test$BrCrCode[i], sep = ""))
}
slashCount <- str_count(test$BrCrCode[i], '/')
if(slashCount == 1){
print(paste("hit found, turn ", test$BrCrCode[i], " into ", unlist(strsplit(test$BrCrCode[i], split = '/', fixed=TRUE))[1], sep = ""))
test$BrCrCode[i] <- unlist(strsplit(test$BrCrCode[i], split = '/', fixed=TRUE))[1]
}
else if(slashCount > 1){
print(paste("control found, value ", test$BrCrCode[i], " into ", paste("control_", unlist(strsplit(test$BrCrCode[i], split = '/', fixed=TRUE))[1], sep = ""), sep = ""))
test$BrCrCode[i] <- paste("control_", unlist(strsplit(test$BrCrCode[i], split = '/', fixed=TRUE))[1], sep = "")
}
rowBrCrCode[i] <- test$BrCrCode[i]
rowPlanted[i] <- test$Planted[i]
rowPsaDeath[i] <- test$PsaDeath[i]
}
firstDT <- data.table(rowBrCrCode, rowPlanted, rowPsaDeath, rowSurvival)
print(firstDT)
#firstDT_agg <- aggregate(x = firstDT, by = list(rowPlanted, rowPsaDeath), FUN = "sum")
Подтвердил, что оба способа работают, но только после того, как некоторые переменные в таблице данных были преобразованы при вводе как числовые. По какой-то причине, когда вы добавляете числа в вектор, он меняется на символ. – ImmortalMewtwo