假设有一个表用于显示“哪个ID何时访问了哪个组织”。表格中的ID,组织和访问时间列。由于一个人可以在不同的时间访问多个组织,因此,如果他们也访问了其他组织,则可以在“ ID”列中重复某些ID。
我想从初始表中提取ID和Organization列,在新表中,我想将组织数据转换为变量(列),并显示ID如何与每个组织匹配。
示例数据:
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
在这种情况下,我找不到需要使用哪个程序包或函数。 尤其是,有没有人知道如何提取列中的数据,然后将其作为新表中的单个列进行散布?
答案 0 :(得分:2)
我们可以使用table
+(table(df1[1:2]) > 0)
答案 1 :(得分:1)
这是一个tidyverse
解决方案:
library(tidyverse)
df1 %>%
mutate(Accessed.Time = 1) %>%
spread(Organisation, Accessed.Time, fill = 0)
或
df1 %>%
count(ID, Organisation) %>%
spread(Organisation, n, fill = 0)
我认为第二种解决方案更加优雅,但是结果是相同的。