Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr表重构/数据争用_R_Dplyr_Tidyr_Data Cleaning - Fatal编程技术网

dplyr表重构/数据争用

dplyr表重构/数据争用,r,dplyr,tidyr,data-cleaning,R,Dplyr,Tidyr,Data Cleaning,我试图创建一个变量来定义真搜索和假搜索。原始数据集位于此处: 基本场景是,有一些变量定义了用户(由ID定义——原始数据集中的会话ID或uuid)执行真搜索与假搜索的次数,因此访问之前总是有搜索,但搜索之后不必有访问。如果您检查原始数据集,还有一个时间变量timestamp,我不知道如何复制它,但我相信它会很有用 原始结构的粗略版本: ID Action Time a search 1 a visit 2 a search 3 a visit 4

我试图创建一个变量来定义真搜索和假搜索。原始数据集位于此处:

基本场景是,有一些变量定义了用户(由ID定义——原始数据集中的会话ID或uuid)执行真搜索与假搜索的次数,因此访问之前总是有搜索,但搜索之后不必有访问。如果您检查原始数据集,还有一个时间变量timestamp,我不知道如何复制它,但我相信它会很有用

原始结构的粗略版本:

ID  Action   Time
a   search    1
a   visit     2
a   search    3
a   visit     4
b   visit     2
b   visit     3
b   search    1
c   search    5
c   search    6
c   search    7
c   visit     8
d   search    3
d   search    4
我试图创建一个变量来定义真搜索和假搜索。 上述数据预计仅按Action=search排序,如以下格式:

我正在尝试制作的结构:

ID  Action ClickThrough
a   search    T
a   search    T
b   search    T
c   search    F
c   search    F
c   search    T
d   search    F
d   search    F

这将使用
dplyr

library(dplyr)
df1 %>%
  arrange(ID,Time) %>%
  group_by(ID) %>%
  mutate(ClickThrough = c(as.logical(diff(Action=="visit")),FALSE)) %>%
  filter(Action=="search")

# # A tibble: 8 x 4
# # Groups:   ID [4]
#      ID Action  Time ClickThrough
#   <chr>  <chr> <int>        <lgl>
# 1     a search     1         TRUE
# 2     a search     3         TRUE
# 3     b search     1         TRUE
# 4     c search     5        FALSE
# 5     c search     6        FALSE
# 6     c search     7         TRUE
# 7     d search     3        FALSE
# 8     d search     4        FALSE
库(dplyr)
df1%>%
安排(ID,时间)%%>%
分组依据(ID)%>%
变异(点击=c(作为逻辑(差异(操作=“访问”)),错误))%>%
过滤器(操作==“搜索”)
##A tibble:8 x 4
##组:ID[4]
#ID动作时间点击
#              
#1搜索1正确
#2 a搜索3正确
#3 b搜索1 TRUE
#4 c搜索5错误
#5 c搜索6错误
#6 c搜索7 TRUE
#7D搜索3错误
#8D搜索4错误

bsearch
TRUE
如何?如果这是一个输入错误,您可以使用
actions%%>%group\u by(ID)%%>%mutate(ClickThrough=lead(Action,default='left')=='visit')%%>%filter(Action=='search')
@alistaire第三个b是搜索,后面可以是访问。操作不正常。那么您的数据中需要时间信息。@alistaire您认为这样可以吗<代码>操作%>%分组依据(ID)%%>%排列(ID,时间)%%>%变异(点击=引导(操作,默认设置为“左”)==“访问”)%%>%过滤器(操作==“搜索”)如果不知道时间是什么,很难说。你需要编辑你的问题,使你的例子重现。