Как преобразовать все данные в столбце в новые столбцы соответственно в новую таблицу - PullRequest
0 голосов
/ 26 ноября 2018

Допустим, есть таблица, показывающая, "к какому идентификатору обращались в какой организации и в какое время".В таблице есть столбец для идентификатора, организации и времени доступа.Поскольку можно получить доступ к нескольким организациям в разное время, некоторые идентификаторы могут повторяться в столбце идентификаторов, если они обращались также и к другим организациям.

Я хочу извлечь столбцы идентификаторов и организации из исходной таблицы и вВ новой таблице я хочу преобразовать данные организации в переменную (столбец) и показать, как идентификаторы соответствуют каждой организации.

Пример данных:

ID <- c( 001, 002, 003, 004, 005, 002) 
Organisation <- c( "A", "B", "C", "A","D", "A") 
Accessed.Time <- c("17:00", "17:00", "17:00", "17:00", "17:00", "17:02")
df1<-data.frame(ID,Organisation,Accessed.Time)

Ожидаемый результат выглядит следующим образом, Например, (0 = нет посещения, 1 = доступ)

 ID  Organisation.A  Organisation.B Organisation.C

 001  1  0  1
 002  0  0  1
 003  1  1  1

Я не могу найти какой пакет или функцию мне нужно использовать для этого случая.Особенно, есть ли кто-нибудь, кто знает, как извлечь данные в столбце, а затем распространить их как отдельный столбец в новой таблице?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вот решение tidyverse:

library(tidyverse)

df1 %>%
 mutate(Accessed.Time = 1) %>%
 spread(Organisation, Accessed.Time, fill = 0)

или

df1 %>%
 count(ID, Organisation) %>%
 spread(Organisation, n, fill = 0)

Я думаю, что второе решение более элегантно, но результат тот же.

0 голосов
/ 26 ноября 2018

Мы можем использовать table

+(table(df1[1:2]) > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...