首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将名称和时间数据从(每个时间内的名称)重塑为(每个名称的所有时间)

将名称和时间数据从(每个时间内的名称)重塑为(每个名称的所有时间)
EN

Stack Overflow用户
提问于 2018-08-18 04:20:24
回答 1查看 31关注 0票数 0

我正在尝试使用R重塑一个活动的注册表。

目前,每列代表一个时间段(例如:上午9点到11点,上午11点到下午1点等),每列中的每一行都是一个联系电子邮件。一些联系人仅注册了时间段,而其他联系人注册了多个:

代码语言:javascript
运行
复制
    9-11            11-1            1-3              3-5
xxx@email.com  zzz@email.com   zzz@email.com    xxx@email.com
yyy@email.com  yyy@email.com   yyy@email.com    yyy@email.com

我调整了数据的形状,使每封电子邮件在time时与一个时隙配对:

代码语言:javascript
运行
复制
xxx@email.com  "9-11"
yyy@email.com  "9-11"
zzz@email.com  "11-1"
yyy@email.com  "11-1"
zzz@email.com  "1-3"
yyy@email.com  "1-3"
xxx@email.com  "3-5"
yyy@email.com  "3-5"

为了准备邮件合并以发送每个任务,我想重塑数据,以便每个电子邮件观察值都与data.frame对象中的所有任务配对(例如:一、二、三或全部):

代码语言:javascript
运行
复制
xxx@email.com   "9-11" , "3-5
yyy@email.com   "9-11" , "11-1" , "1-3", "3-5"
zzz@email.com   "11-1" , "1-3"

我当前的代码是:

代码语言:javascript
运行
复制
assignments_final <- sapply(split(assignments[-1], assignments[1]), function(X) unname(unlist(X))) 
 # combine all time slots assigned to the same person into one list 

df <- data.frame()
 # create data frame to add each list object

for (i in 1:length(assignments_final)) {
  df <- rbind(df, assignments_final[[i]])
  }
# for each observation, add contact and all assignments to a new row

然而,这段代码给出了一个错误:"In [<-.factor(*tmp*,ri,value = "9-11"):无效的因子级别,NA生成“

返回的数据框只包含每个人是否被分配到第一个人的班次(例如:如果第一个人被分配到9-11和11-1的班次,则有两列;如果此人注册了班次,则每列包含该班次;如果没有,则为NA。

我如何解决这个问题,使得有n个不同的列,每个班次对应一个班次,该人员没有被分配的班次被标记为NA,或者所有班次都列在一列中?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-18 04:26:32

您可以使用aggregate

代码语言:javascript
运行
复制
> aggregate(V2~V1, data=df, FUN=paste0)
             V1                   V2
1 xxx@email.com            9-11, 3-5
2 yyy@email.com 9-11, 11-1, 1-3, 3-5
3 zzz@email.com            11-1, 1-3

数据:

代码语言:javascript
运行
复制
df <- read.table(text="xxx@email.com  9-11
yyy@email.com  9-11
                 zzz@email.com  11-1
                 yyy@email.com  11-1
                 zzz@email.com  1-3
                 yyy@email.com  1-3
                 xxx@email.com  3-5
                 yyy@email.com  3-5", header=FALSE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51902379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档