R中的数据扩散和同时NA下降?

R中的数据扩散和同时NA下降?,r,dplyr,tidyr,R,Dplyr,Tidyr,我需要在R中重塑一个数据帧,但我找不到一篇文章来描述我需要的重塑类型的解决方案。我的数据框如下所示: # Sample data frame. time <- c(1:8) aoi <- c("a", "b", "c", NA, "a", "c", NA, "b") df <- data.frame(time, aoi) time aoi 1 a 2 b 3 c 4 <NA> 5 a 6

我需要在R中重塑一个数据帧,但我找不到一篇文章来描述我需要的重塑类型的解决方案。我的数据框如下所示:

# Sample data frame.
time        <- c(1:8)
aoi         <- c("a", "b", "c", NA, "a", "c", NA, "b")
df          <- data.frame(time, aoi)

time aoi
1    a
2    b
3    c
4 <NA>
5    a
6    c
7 <NA>
8    b
谢谢你的帮助

您是否尝试过:

df1 <- spread(df,aoi,-time)
data.frame(time=d1$time
 ,a=as.integer(!is.na(df1$a))
 ,b=as.integer(!is.na(df1$b))
 ,c=as.integer(!is.na(df1$c)))

#  time a b c
#1    1 1 0 0
#2    2 0 1 0
#3    3 0 0 1
#4    4 0 0 0
#5    5 1 0 0
#6    6 0 0 1
#7    7 0 0 0
#8    8 0 1 0

df1尝试
library(重塑2);dcast(df,time~aoi,fun.aggregate=length)[,c('time','a','b','c')]
谢谢@Nicolas2!我希望用一种更短的方法来摆脱NAs,但这也行得通。
df1 <- spread(df,aoi,-time)
data.frame(time=d1$time
 ,a=as.integer(!is.na(df1$a))
 ,b=as.integer(!is.na(df1$b))
 ,c=as.integer(!is.na(df1$c)))

#  time a b c
#1    1 1 0 0
#2    2 0 1 0
#3    3 0 0 1
#4    4 0 0 0
#5    5 1 0 0
#6    6 0 0 1
#7    7 0 0 0
#8    8 0 1 0