Вы можете попробовать это решение в base R
:
# Data
Data2 <- structure(list(Gene = structure(1:3, .Label = c("ABCA2", "ABCA3",
"ABCA5"), class = "factor"), bile_duct = c(-0.01319722, -0.06648552,
-0.05049298), bile_duct2 = c(-0.01319722, -0.06648552, -0.05049298
)), class = "data.frame", row.names = c(NA, -3L))
#Function
cuts <- function(x,a,b)
{
y<-ifelse(x>=a & x<=b,1,0)
return(y)
}
cuts(-1.5,a = -3,b = -1)
#Apply function and create a copy of data
Data3 <- Data2
Data3[,-1] <- apply(Data2[,-1],2,cuts,a = -3,b = -1)
#Obtain sums for all columns
Sum <- colSums(Data3[,-1])
#Summary by gene
aggregate(.~Gene,data=Data3,FUN = sum,na.rm=T)
Sum
bile_duct bile_duct2
0 0
Агрегация должна измениться с появлением дополнительных данных, показывающих количество значений:
Gene bile_duct bile_duct2
1 ABCA2 0 0
2 ABCA3 0 0
3 ABCA5 0 0
Надеюсь, это поможет.