我希望 "EVENT_ID" 中的所有值相对于 "Email_ID" 以单独列的形式显示

I want to all the values in the "EVENT_ID" to be displayed in the form of separate columns with respect to the "Email_ID"

电子邮件 ID 具有重复值,对应于存在唯一事件 ID。我想在 table 中对其进行转换,以便对于每个电子邮件 ID,所有事件 ID 都应列在不同的列中

这是在 R 中的实现方式:

我们从一个包含 2 个字段、电子邮件和事件的数据集开始:

email <- c("john.doe@mysite.com", "jane.doe@mysite.com")

event <- c("event1", "event2", "event3", "event4")

df <- as.data.frame(cbind(email, event), stringsAsFactors = F)

df

  email               event
1 john.doe@mysite.com event1
2 jane.doe@mysite.com event2
3 john.doe@mysite.com event3
4 jane.doe@mysite.com event4

到目前为止,我们有 2 封不同的电子邮件和 4 个事件。

使用 dcast 函数,您应该能够创建所需的枢轴 table。

library(reshape2) # needed to use the dcast function
df.new <- dcast(df, email ~ event)

df.new
            email       event1  event2  event3  event4
1 jane.doe@mysite.com   <NA>    event2  <NA>    event4
2 john.doe@mysite.com   event1  <NA>    event3  <NA>

所以第一条新记录包含:

df.new[1,]

  email                 event1 event2 event3 event4
1 jane.doe@mysite.com   <NA>   event2 <NA>   event4

第二个包含:

df.new[2,]

  email               event1 event2 event3 event4
2 john.doe@mysite.com event1 <NA>   event3 <NA>

更多信息: https://www.r-bloggers.com/pivot-tables-in-r/

谢谢

如果您愿意,也可以使用 tidyr 来完成:

email <- c("john.doe@mysite.com", "jane.doe@mysite.com")
event <- c("event1", "event2", "event3", "event4")
df <- as.data.frame(cbind(email, event), stringsAsFactors = F)

library(tidyr)

df <- df %>%
  spread(event, event)
df

哪个returns

                email event1 event2 event3 event4
1 jane.doe@mysite.com   <NA> event2   <NA> event4
2 john.doe@mysite.com event1   <NA> event3   <NA>