自从我不久前开始使用 R
URL 将类似于此示例格式,可在“源”列中找到
URL 中对我来说很重要的部分是“utm_source=ADX”位。我的数据如下所示:
用户/来源
1 /
2 /
3 /
我需要做的是从 URL 中捕获 utm_source 并将信息转置到不同的列中,示例如下:
用户/来源/utm_source
1 / 谷歌点击 / ADX&ID56789
2 / 谷歌点击 / ADW&ID56009
3 / googleclick / ADWords&ID53389
所以本质上我需要 R 在整个数据帧中搜索值“utm_source=”,一旦找到它们,我希望它将“utm_source=”值转置为列名并复制后面的所有信息每行的该列中的“=”。我知道“grep”是一个在 datafreme 中定位特定信息的函数,例如 data
有没有办法修改 grepl 函数以满足我需要的标准?
没有什么是不可能的。
x <- read.csv(text="
User, Source
1, http://www.googleclick.com?utm_source=ADX&ID56789
2, http://www.googleclick.com?utm_source=ADW&ID56009
3, http://www.googleclick.com?utm_source=ADWords&ID53389
", header=TRUE, stringsAsFactors=FALSE)
首先,使用strsplit
strsplit(x$Source, split="\\?utm_source=")
[[1]]
[1] " http://www.googleclick.com" "ADX&ID56789"
[[2]]
[1] " http://www.googleclick.com" "ADW&ID56009"
[[3]]
[1] " http://www.googleclick.com" "ADWords&ID53389"
然后找到一根烧红的拨火棍,放在你所谓的顾问的眼睛里。
EDIT:
正如 Paul Hiemstra 所建议的,您还可以直接使用正则表达式:
gsub(".*\\?utm_source=", "", x$Source)
[1] "ADX&ID56789" "ADW&ID56009" "ADWords&ID53389"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)