【发布时间】:2020-10-14 18:52:18
【问题描述】:
我不熟悉使用 tidyverse。我想看看使用这个包中的函数是否尽可能高效/简洁。我怀疑我不是。
我的原始数据在每个列名中都有键符号。
day a_x b_x a_y b_y
1 1 -0.56047565 1.2240818 -1.0678237 0.42646422
2 2 -0.23017749 0.3598138 -0.2179749 -0.29507148
...
我想让数据看起来整齐,像这样:
day sym x y
1 1 a 0.118 0.702
2 2 a -0.947 -0.262
...
11 1 b 1.44 0.788
12 2 b 0.452 0.769
这是我进行上述转换的代码:
library(tidyverse)
set.seed(123)
# example original table
d <- tibble(day=1:10,a_x=rnorm(10),b_x=rnorm(10),a_y=rnorm(10),b_y=rnorm(10))
# manipulations
d1 <- gather(d,a_x,b_x,key='sym',value='x') %>% mutate(sym=sub('_x','',sym)) %>% select(day,sym,x)
d2 <- gather(d,a_y,b_y,key='sym',value='y') %>% mutate(sym=sub('_y','',sym)) %>% select(day,sym,y)
d <- d1 %>% full_join(d2,by=c('day','sym'))
使用一些 tidyverse 函数以更少的行或更有效地实现相同结果的更好方法是什么?
谢谢!
【问题讨论】:
标签: r dplyr tidyverse tidyr tibble