私は、独自の繁殖コードのPlantingsとDeath Countの合計を計算することができません。私はこれを行うために集計関数を使用しようとしています。集計関数を使用して一意の合計を計算する
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
ローこの機能の後にサバイバルが計算されます。
現在のコードはここにこれをコードを入力され、問題のコードは(私は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")
両方の方法で動作することが確認されましたが、data.tableの変数の一部が入力時に数値として変換された後にのみ有効です。何らかの理由で、ベクトルに数値を追加すると、それは文字に変わります。 – ImmortalMewtwo