在带有tidyverse的组中长而宽换位

时间:2018-06-22 18:50:58

标签: r tidyverse

我不能完全解决这一问题。 我怎么去:

Visit Test
1     A
1     B
2     A
2     C
3     B

收件人:

Visit A     B     C
1     TRUE  TRUE  FALSE
2     TRUE  FALSE TRUE
3     FALSE TRUE  FALSE

2 个答案:

答案 0 :(得分:4)

使用dplyrtidyr,您可以

dd %>% mutate(Value=TRUE) %>% 
  spread(Test, Value, fill=FALSE)

#   Visit     A     B     C
# 1     1  TRUE  TRUE FALSE
# 2     2  TRUE FALSE  TRUE
# 3     3 FALSE  TRUE FALSE

经过测试

dd<-read.table(text="Visit Test
       1     A
       1     B
       2     A
       2     C
       3     B", header=T)

答案 1 :(得分:0)

另一种选择是将reshape2::dcastfun.aggregate一起使用,以检查length是否大于0

library(reshape2)

dcast(df,Visit~Test, fun.aggregate = function(x)length(x)>0, value.var = "Test")

#   Visit     A     B     C
# 1     1  TRUE  TRUE FALSE
# 2     2  TRUE FALSE  TRUE
# 3     3 FALSE  TRUE FALSE

数据:

df<-read.table(text="Visit Test
1     A
1     B
2     A
2     C
3     B", 
header=TRUE, stringsAsFactor = FALSE)