मेरे पास एक बड़ा डेटा-फ्रेम है (लगभग 1,000 पंक्तियाँ और 30,000 स्तंभ) जो इस तरह दिखता है:
chr pos sample1 sample2 sample3 sample 4
1 5050 1 NA 0 0.5
1 6300 1 0 0.5 1
1 7825 1 0 0.5 1
1 8200 0.5 0.5 0 1
जहां दिए गए "chr" और "pos" के लिए मान aदिया गया नमूना 0, 0.5, 1 या NA का रूप ले सकता है। मेरे पास प्रदर्शन करने के लिए बड़ी संख्या में क्वेरीज़ हैं जिन्हें प्रत्येक नमूने के लिए मानों के सारांश के आधार पर डेटा फ़्रेम को सब्मिट और ऑर्डर करना होगा।
मैं संख्या की एक संख्या प्राप्त करना चाहूंगाप्रत्येक कॉलम के लिए दिए गए मान (उदा। 0.5) की घटनाएँ, और मेरे डेटा फ़्रेम में एक नई पंक्ति के रूप में सहेजें। मेरा अंतिम लक्ष्य मेरे डेटा फ्रेम के कॉलम को कम करने और / या ऑर्डर करने के लिए नई पंक्ति के मूल्यों का उपयोग करने में सक्षम होना है। मैंने गणनाएँ घटित होने के बारे में समान प्रश्न देखे हैं, लेकिन मैं सभी स्तंभों पर एक साथ ऐसा करने के लिए एक समाधान खोजने / पहचानने के लिए एक नई पंक्ति के रूप में एक विशेष मूल्य के लिए कॉलम-वार मायने रखता है।
उत्तर:
जवाब के लिए 5 № 1आप आप के सभी कॉलम के लिए एक फंक्शन लागू कर सकते हैं data.frame। मान लीजिए कि आप डेटा के प्रत्येक कॉलम में "ए" की संख्या गिनना चाहते हैं। डी
#a sample data.frame
L3 <- LETTERS[1:3]
(d <- data.frame(cbind(x = 1, y = 1:10), fac = sample(L3, 10, replace = TRUE)))
# the function you are looking for
apply(X=d,2,FUN=function(x) length(which(x=="A")))
जवाब के लिए 0 № 2
@Jilber के समान। मान लें कि आपका डेटा एक डेटा फ़्रेम में है df
.
lst <- colnames(df[,-(1:2)])
count.na <- sapply(lst,FUN=function(x,df){sum(is.na(df[,x]))},df)
count.00 <- sapply(lst,FUN=function(x,df){sum(df[,x]==0,na.rm=T)},df)
count.05 <- sapply(lst,FUN=function(x,df){sum(df[,x]==0.5,na.rm=T)},df)
count.10 <- sapply(lst,FUN=function(x,df){sum(df[,x]==1.0,na.rm=T)},df)
df <- rbind(df,
c(NA,NA,count.na),
c(NA,NA,count.00),
c(NA,NA,count.05),
c(NA,NA,count.10))
आप शायद अंतिम rbind (...) स्टेटमेंट में NA की जगह लेना चाहते हैं, जो आपको पहचानता है कि आप क्या गिन रहे हैं।