मेरे पास एक टिबल है:

example <-  tibble(Level = list(0.80,0.90)) %>%

                mutate(bounds = list(c(2.3,4.5),
                                     c(2.7,5.2)))

जब मैं एक जीटी टेबल बनाता हूं, तो मुझे एक 2x2 टिब्बल मिलता है जो कुछ इस तरह दिखता है:

Level  Bounds
0.80   2.3, 4.5
0.90   2.7, 5.1

मैं जो चाहता हूं वह 2x2 gt तालिका है जिसमें केवल एक तत्व सीमा के नीचे है, कोष्ठक में:

Level  Bounds
0.80   (2.3,4.5)
0.90   (2.7,5.1)

क्या इसे करने का कोई तरीका है?

1
HAK 22 मार्च 2020, 22:54

2 जवाब

सबसे बढ़िया उत्तर

एक dplyr और purrr संभावना हो सकती है:

example %>%
 transmute(Level_bounds = paste(unlist(Level),
                                paste0("(", map_chr(bounds, paste, collapse = ","), ")"),
                                sep = " - "))

  Level_bounds   
  <chr>          
1 0.8 - (2.3,4.5)
2 0.9 - (2.7,5.2)

यदि वास्तव में दो स्तंभों की आवश्यकता है:

example %>%
 transmute(Level = unlist(Level),
           bounds = paste0("(", map_chr(bounds, paste, collapse = ","), ")"))

  Level bounds   
  <dbl> <chr>    
1   0.8 (2.3,4.5)
2   0.9 (2.7,5.2)
0
tmfmnk 22 मार्च 2020, 23:03

हम unnest list कॉलम, 'लेवल', paste 'एलिमेंट्स इन 'बाउंड्स' के आधार पर ग्रुप कर सकते हैं और इसे sprintf के साथ फॉर्मेट कर सकते हैं।

library(dplyr)
library(tidyr)
example %>%
    unnest %>% 
    group_by(new = Level) %>% 
    summarise(Level_Bounds = sprintf('%0.2f - (%s)',
             first(Level), toString(bounds))) %>%
    select(-new)
# A tibble: 2 x 1
#  Level_Bounds     
#  <chr>            
#1 0.80 - (2.3, 4.5)
#2 0.90 - (2.7, 5.2)

अगर हमें दो कॉलम चाहिए

library(stringr)
example %>%
 unnest %>% 
  group_by(Level) %>% 
  summarise(Bounds = str_c("(", toString(bounds), ")"))
# A tibble: 2 x 2
#   Level Bounds  
#   <dbl> <chr>   
# 1   0.8 (2.3, 4.5)
#2   0.9 (2.7, 5.2)

या pmap का उपयोग कर रहे हैं

library(purrr)
example %>% 
    transmute(Level_bounds = pmap_chr(., ~  paste0(..1, " - (",
           toString(..2), ")")))
# A tibble: 2 x 1
#  Level_bounds    
#  <chr>           
#1 0.8 - (2.3, 4.5)
#2 0.9 - (2.7, 5.2)

या base R का उपयोग कर रहे हैं

data.frame(Level = unlist(example$Level),
      Bounds = paste0("(", sapply(example$bounds, toString), ")"))
0
akrun 22 मार्च 2020, 23:11
क्या कोई तरीका है कि मैं एक नए चर को बदल सकता हूं जो डबल वेक्टर को एक एकल वेक्टर में पेस्ट का उपयोग करके कोष्ठक के साथ परिवर्तित करता है? यह एक आसान समाधान हो सकता है और मुझे 2x2 कॉलम भी देगा, जिसे मैं प्राप्त करने का प्रयास कर रहा हूं। मेरी माफ़ी, मूल प्रश्न में इसे स्पष्ट करना चाहिए था। इसे अब प्रतिबिंबित करने के लिए संपादित किया है।
 – 
HAK
22 मार्च 2020, 23:03