क्या कोई कॉलम छोड़कर किसी डेटा फ्रेम के सभी कॉलम चुनने का कोई तरीका है: यह df[,-1]
का एनालॉग होगा, सूचकांक के बजाय कॉलम नाम का उपयोग करने के अलावा?नाम से कॉलम को अचयनित करना, आर
15
A
उत्तर
37
आप वेक्टर सबसेटिंग का उपयोग करके ऐसा कर सकते हैं।
R> dd = data.frame(A = 1:3, B = 1:3, C=1:3, D=1:3)
फिर चयन को उल्टा करने के !
ऑपरेटर का उपयोग करें:: सबसे पहले, एक डमी डेटा सेट बनाने
R> dd[ ,!(colnames(dd) == "A")]
B C D
1 1 1 1
2 2 2 2
3 3 3 3
वैकल्पिक रूप से, आप हो सकता है:
एक थोड़ा छोटा संस्करण (@ टोमास की सौजन्य):
dd[ , names(dd) != "A"]
(@Tyler के सौजन्य से) एकाधिक स्तंभों के साथ सामना करने के लिए
dd[ ,!(colnames(dd) %in% c("A", "B"))]
7
एक स्तंभ की पहचान के लिए समाप्त हो which()
समारोह इस्तेमाल कर सकते हैं।
dd <- data.frame(A = 1:5, B = 1:5, C=1:5)
dd[, -which(names(dd) == "A")]
या सकारात्मक
dd[, which(names(dd) != "A")]
हालांकि, अगर वहाँ कोई कॉलम "A" का नाम दिया है, तो आप एक डेटा फ्रेम 0 कॉलम और nrow(dd)
पंक्तियों के साथ मिलेगा। तो "ए" नामक कॉलम के अस्तित्व की जांच करना अच्छा होगा।
if(any(names(dd) == "A")) {
dd[, which(names(dd) != "A")]
}
5
subset
समारोह पहले से ही वाक्य रचना इस प्रकार की अनुमति देता है, मदद पृष्ठ पर उदाहरण से: आप dplyr पैकेज का उपयोग कर सकते
subset(airquality, Day == 1, select = -Temp)
0
एकाधिक स्तंभों का चयन रद्द करने के लिए। एक उदाहरण के रूप में:
dd = data.frame(A = 1:3, B = 1:3, C=1:3, D=1:3)
library(dplyr)
newdd <- select(dd, -A,-C)
यह @csgillespie के सुझाव के अलावा एक और तरीका है।