自从我不久前开始使用R
该URL看起来像此示例格式,可以在“源”列中找到

http://www.googleclick.com?utm_source=ADX&ID56789

http://www.googleclick.com?utm_source=ADW&ID56009

http://www.googleclick.com?utm_source=ADWords&ID53389

URL中对我来说很重要的部分是“utm_source = ADX”位。我的数据如下所示:

用户/来源

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

我需要做的是从URL捕获utm_source并将信息转置到其他列中,例如以下示例:

用户/来源/ utm_source

1 / googleclick / ADX&ID56789

2 / googleclick / ADW&ID56009

3 / googleclick / ADWords&ID53389

因此,从本质上讲,我需要R在整个数据框中搜索值“utm_source =“,一旦找到它们,我希望它将“utm_source =”值转置为列名,并复制后面的所有信息该列中每一行的“=”。我知道“grep”是一个在datafreme中定位特定信息的函数,例如数据
有没有办法修改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"

然后找到炙手可热的扑克,并留在所谓的顾问眼中。

编辑:

根据Paul Hiemstra的建议,您还可以直接使用正则表达式:
gsub(".*\\?utm_source=", "", x$Source)
[1] "ADX&ID56789"     "ADW&ID56009"     "ADWords&ID53389"

09-27 23:27