tidyr扩展键值对的子集

时间:2018-05-03 03:19:38

标签: r tidyr spread

鉴于示例数据,我想<div class="display-label">Code</div> <div class="display-field">USSCIESTMI</div> <div class="display-label">Name</div> <div class="display-field">MY SUPPLIER NAME</div> spread对的子集。在这种情况下,它只是一对。但是,在其他情况下,key-value的子集不止一对。

spread

所有键值对的经典传播:

library(tidyr)
# dummy data
> df1 <- data.frame(e = c(1, 1, 1, 1),
              n = c("a", "b", "c", "d") ,
              s = c(1, 2, 5, 7))
> df1
  e n s
1 1 a 1
2 1 b 2
3 1 c 5
4 1 d 7

所需输出,仅展开> df1 %>% spread(n,s) e a b c d 1 1 1 2 5 7

n=c

1 个答案:

答案 0 :(得分:5)

我们可以在gather

之后执行spread
df1 %>%
  spread(n, s) %>% 
  gather(n, s, -c, -e)
#  e c n s
#1 1 5 a 1
#2 1 5 b 2
#3 1 5 d 7

或者代替spread/gather,我们filter没有'c'行,然后mutate创建'c'列,同时对与'c'对应的's'进行子集化

df1 %>% 
   filter(n != "c") %>% 
   mutate(c = df1$s[df1$n=="c"])