2015-12-30 16 views
8

क्या dplyr में कुछ प्रकार के कॉलम का चयन करने का एक संक्षिप्त तरीका है? उदाहरण के लिए, dplyr श्रृंखला के भीतर सभी वर्ण कॉलम का चयन कैसे करें?dplyr - कुछ प्रकार के कॉलम का चयन कैसे करें

+0

ऐसा नहीं है कि dplyr पैकेज से परिचित लिखने की अनुमति देता है कि है। लेकिन क्या आप ऐसा कुछ कर सकते हैं? 'वर्ग' फ़ंक्शन के समान:' d <- tbl_df (आईरिस); type_sum (घ); चुनें (डी, जो (type_sum (डी) == "डीबीएल")) ' – Jimbou

उत्तर

21

Dplyr 0.5 साथ ऐसा कर सकते select_if() आप select_if(is.character)

+2

यह कोड को dplyr श्रृंखला के अंदर एक आवेदन का उपयोग करने से अधिक क्लीनर बनाता है! –

4

इसके बारे में जाने का एक तरीका विभिन्न स्तंभों के वर्ग प्राप्त करना होगा। तो यह सोचते हैं कि हम कुछ डेटा है:

library(dplyr) 
DT <- data.frame(A = letters[1:6], B = c(T,F,F), C = seq(1,2,length.out = 6), D = 1:6) 
dt <- tbl_df(DT) 
dt$A <- as.character(dt$A) 
उत्पादन
 A  B  C  D 
    (chr) (lgl) (dbl) (int) 
1  a TRUE 1.0  1 
2  b FALSE 1.2  2 
3  c FALSE 1.4  3 
4  d TRUE 1.6  4 
5  e FALSE 1.8  5 
6  f FALSE 2.0  6 

अब हम जो समारोह का उपयोग कर वर्गों प्राप्त कर सकते हैं:

cls <- sapply(dt, class) 
cls 
उत्पादन
 A   B   C   D 
"character" "logical" "numeric" "integer" 

अब यह सीधे है आगे:

newDF <- dt %>% select(which(cls=="character")) 
newDF 
उत्पादन
 A 
    (chr) 
1  a 
2  b 
3  c 
4  d 
5  e 
6  f 
+0

नाइस - मैं संभवतः dplyr श्रृंखला के बाहर कक्षाएं प्राप्त करने से बचने का एक तरीका ढूंढ रहा हूं। – paljenczy

संबंधित मुद्दे