मान लीजिए मेरे पास निम्न की तरह डेटा फ्रेम है:

df=data.frame(x=1:5,y=c("a","b","c","d","e"))

जहां y कुंजी कॉलम है। कभी-कभी मैं y में चाबियों की एक श्रृंखला के अनुरूप x के मान देखना चाहता हूं। इसे पूरा करने के लिए, मैं कर सकता हूँ

row.names(df)=df$y
df[c("b","d","c"),c("x")]

और मुझे मिल जाएगा

[1] 2 4 3

ध्यान दें कि दिए गए मानों का क्रम वही है जो दी गई कुंजियों की श्रृंखला का है।

अब मैं tidyverse's tibble का उपयोग करके वही चीज़ हासिल करना चाहता हूं। लेकिन चूंकि टिब्बल में row.names नहीं है, मुझे नहीं पता कि यह कैसे करना है।

मेरा प्रश्न यह है कि, चाबियों के क्रम का पालन करते हुए, चाबियों की एक श्रृंखला दी गई टिब्बल में मूल्यों को देखने के लिए "सबसे चतुर" तरीका (या पायथन से एक शब्द उधार लेने का मुहावरेदार तरीका) क्या है?

0
wdg 11 जुलाई 2018, 16:38

2 जवाब

Data.frame के साथ ऐसा करने का गैर-पंक्तिनाम तरीका है

df[match(c('b', 'd', 'c'), df$y), 'x']

यह टिबल्स के साथ भी काम करता है। वैकल्पिक रूप से, dplyr क्रियाओं का प्रयोग करें:

df %>% slice(match(c('b', 'd', 'c'), y)) %>% pull(x)
1
Axeman 11 जुलाई 2018, 16:48

मैं फ़िल्टर का उपयोग करूंगा

library(tidyverse)

df <- tibble(
  x = 1:5,
  y = c("a","b","c","d","e")
)

df %>% 
  filter(y %in% c("b","d","c"))
#> # A tibble: 3 x 2
#>       x y    
#>   <int> <chr>
#> 1     2 b    
#> 2     3 c    
#> 3     4 d

2018-07-12 को reprex पैकेज (v0.2.0.9000) द्वारा बनाया गया।

1
Peter H. 12 जुलाई 2018, 12:34