在 R 中创建一个新的数据框,将用户聚合成更大的用户组
Creating a new data frame that aggregates users into larger groups of users in R
目标:创建一个新的数据框架,从不同位置获取个人用户数据,并将其聚合到基于位置的时间序列数据框架中。
新的 table 将为每个 Locationid 包含一行,每一列都是每月时间序列的一部分(第一列除外,它是位置 ID)。数据框每个部分中的数据将是行动项目/总访问量的百分比。 "Action Item" 列中的 1 表示一个操作项目,0 表示未采取任何操作。
当前数据为:
Userid Locationid VisitDate ActionItem
1 Loc 1 6-13 1
2 Loc 1 7-13 0
3 Loc 2 7-13 1
目标是拥有一个如下所示的数据框:
Locid 6-13 7-13 8-13 9-13 ...
1 1 0 0 0
2 0 1 0 0
您可以使用 tidyr
中的 spread
函数:
library(dplyr)
library(tidyr)
df %>%
select(-Userid) %>%
spread(key = VisitDate, value = ActionItem)
# Locationid 6-13 7-13
# Loc 1 1 0
# Loc 2 NA 1
试试这个:
library(reshape2)
df1=acast(df, Locationid~VisitDate, value.var="ActionItem")
df1[is.na(df1)]=0
> df1
6-13 7-13
1 1 0
2 0 1
目标:创建一个新的数据框架,从不同位置获取个人用户数据,并将其聚合到基于位置的时间序列数据框架中。
新的 table 将为每个 Locationid 包含一行,每一列都是每月时间序列的一部分(第一列除外,它是位置 ID)。数据框每个部分中的数据将是行动项目/总访问量的百分比。 "Action Item" 列中的 1 表示一个操作项目,0 表示未采取任何操作。
当前数据为:
Userid Locationid VisitDate ActionItem
1 Loc 1 6-13 1
2 Loc 1 7-13 0
3 Loc 2 7-13 1
目标是拥有一个如下所示的数据框:
Locid 6-13 7-13 8-13 9-13 ...
1 1 0 0 0
2 0 1 0 0
您可以使用 tidyr
中的 spread
函数:
library(dplyr)
library(tidyr)
df %>%
select(-Userid) %>%
spread(key = VisitDate, value = ActionItem)
# Locationid 6-13 7-13
# Loc 1 1 0
# Loc 2 NA 1
试试这个:
library(reshape2)
df1=acast(df, Locationid~VisitDate, value.var="ActionItem")
df1[is.na(df1)]=0
> df1
6-13 7-13
1 1 0
2 0 1