在R中,如何使用gsub()操作字符串并高效地执行多元数据清理?
我是R编程的新手,我一直在处理字符串,如果有人能对代码进行注释,我将不胜感激。数据框中有福布斯100大品牌。我想清理一个特定的专栏“公司广告”作为(检查附加的屏幕截图)在R中,如何使用gsub()操作字符串并高效地执行多元数据清理?,r,regex,gsub,data-science,data-cleaning,R,Regex,Gsub,Data Science,Data Cleaning,我是R编程的新手,我一直在处理字符串,如果有人能对代码进行注释,我将不胜感激。数据框中有福布斯100大品牌。我想清理一个特定的专栏“公司广告”作为(检查附加的屏幕截图) 将所有百万值转换为十亿,因为1 M=0.001 B 删除不必要的符号B、M,并且仅具有数值 结果列将看起来像.. 前:1.2 B、2.3 B、3 B、808米 之后:1.2、2.3、3、0.808gsubfn非常适合此任务: x = c("1.2 B", "2.5 B", "808 M") y = ifelse(grep
- 将所有百万值转换为十亿,因为1 M=0.001 B
- 删除不必要的符号B、M,并且仅具有数值
之后:1.2、2.3、3、0.808
gsubfn
非常适合此任务:
x = c("1.2 B", "2.5 B", "808 M")
y = ifelse(grepl("B",x) == T, as.numeric(gsub("\\s{1,10}B$","",x)),as.numeric(gsub("\\s{1,10}M$","",x))/1000)
View(y)
x
1 1.200
2 2.500
3 0.808
library(gsubfn)
as.vector(sapply(gsubfn("[A-Z]", list(B="* 1", M= "* 1e-3"), x),
function(x) eval(parse(text=x))))
#[1] 1.200 2.500 0.808
数据
x请粘贴dput(d1)
的结果,而不是一个不可用的图像。==T
充其量是多余的。谢谢你的回答,你能解释一下这个列表(B=“*1”,M=“*1e-3”)吗?我不明白。@Ashish25Sahu在这里,我们正在创建一个键/值来用*1
字符串替换“B”,“M”与*1e-3
一起使用,因此当我们使用eval(parse
进行计算时,另一个值与*1
或*1e-3
相乘,这相当于Perl构造s/../ge
。
x <- c("1.2 B", "2.5 B", "808 M")