मेरे पास "

उदाहरण के लिए:

"<0.1" "0.1" होगा

मैंने यह कोशिश की:

data2[1:nrow(data2),] <- as.data.frame(apply(data2[1:nrow(data2),], 2, function(x) sub("<a*", "", x)))

लेकिन यह "गलत (<0.1)" से "गलत (0.1)" जैसे स्ट्रिंग्स को भी बदल देता है। इसे केवल "

मैंने उदाहरणों की खोज की जैसे: स्ट्रिंग स्ट्रिंग के विशिष्ट भाग को प्रतिस्थापित करती है $x

लेकिन दुर्भाग्य से उन्होंने मदद नहीं की।

1
Quinten 8 फरवरी 2021, 12:57
एक नज़र डालें [से अधिक और उससे कम हो"> stackoverflow.com/questions/23983450/…। विशेष पात्रों को विशेष रूप से निपटाया जाना चाहिए (कभी-कभी कई बार बच निकले)।
 – 
splaisan
8 फरवरी 2021, 13:04
1
इस तरह? sub("^<a*", "", x)
 – 
Sandipan Dey
8 फरवरी 2021, 13:37

1 उत्तर

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

आप सीधे टेक्स्ट से नंबर निकालने के लिए readr के parse_number फ़ंक्शन का उपयोग कर सकते हैं।

library(dplyr)
library(readr)

df <- data.frame(a = c('1', '>0.01', '<0.2'), b = c(1, 'wrong (<0.1)', '<0.05'))

df %>% mutate(across(.fns = parse_number))
#     a    b
#1 1.00 1.00
#2 0.01 0.10
#3 0.20 0.05
1
Ronak Shah 8 फरवरी 2021, 14:53
यह <0.1 से 0.1 के लिए काम करता है, लेकिन आप "गलत (<0.1)" को "0.1" में कैसे बदलते हैं? 0.1 कोई भी संख्या हो सकती है
 – 
Quinten
8 फरवरी 2021, 14:27
लेकिन आपने कहा था कि आप इसे बदलना नहीं चाहते हैं? dplyr और readr का प्रयोग करके df %>% mutate(across(.fns = parse_number)) को आजमाएं
 – 
Ronak Shah
8 फरवरी 2021, 14:29
मैंने कहा कि यह "गलत (<0.1)" को "गलत (0.1)" में भी बदल देता है, जो अच्छा नहीं है क्योंकि मुझे केवल संख्याएं चाहिए। इसने केवल < को हटा दिया और संख्याओं को छोड़कर सभी पाठ नहीं।
 – 
Quinten
8 फरवरी 2021, 14:32
मैंने यह कोशिश की: str_replace_all(x, "[wrong(<)]", "") और काम भी किया
 – 
Quinten
8 फरवरी 2021, 15:15