2016-10-14 7 views
-1

Идентификатор электронной почты имеет повторяющееся значение и соответствует тому, что есть уникальный идентификатор события. Я хочу, чтобы преобразовать его в таблице таким образом, что для каждого почтового идентификатора всех идентификаторов событий должно быть перечислены в различном coloumnsЯ хочу, чтобы все значения в EVENT_ID отображались в виде отдельных столбцов в отношении «Email_ID»

+1

Просьба представить некоторые примеры данных и код, где вы пытались решить эту проблему. – holzben

ответ

1

это, как это может быть сделано в R:

мы начинаем из набора данных с 2-мя полями , электронная почта и событие:

email <- c("[email protected]", "[email protected]") 

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

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

df 

    email    event 
1 [email protected] event1 
2 [email protected] event2 
3 [email protected] event3 
4 [email protected] event4 

до сих пор у нас есть 2 разных электронных сообщения и 4 события.

Используя функцию dcast, вы должны иметь возможность создать сводную таблицу, в которой вы нуждаетесь.

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

df.new 
      email  event1 event2 event3 event4 
1 [email protected] <NA> event2 <NA> event4 
2 [email protected] event1 <NA> event3 <NA> 

поэтому первая запись содержит новый:

df.new[1,] 

    email     event1 event2 event3 event4 
1 [email protected] <NA> event2 <NA> event4 

и второй из них содержит:

df.new[2,] 

    email    event1 event2 event3 event4 
2 [email protected] event1 <NA> event3 <NA> 

для получения дополнительной информации: https://www.r-bloggers.com/pivot-tables-in-r/

Благодарности

+0

Спасибо, это действительно помогло. –

+0

приветствую :) –

0

Это также может быть сделано с помощью tidyr если вы предпочитаете:

email <- c("[email protected]", "[email protected]") 
event <- c("event1", "event2", "event3", "event4") 
df <- as.data.frame(cbind(email, event), stringsAsFactors = F) 

library(tidyr) 

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

который возвращает

   email event1 event2 event3 event4 
1 [email protected] <NA> event2 <NA> event4 
2 [email protected] event1 <NA> event3 <NA>