使用dplyr独立的数据集中的子集变量

Mic*_*ael 0 r subset dplyr

我想使用dplyr复制以下内容.

set.seed(123)
my_data <- data.frame( time = c(4:13, 4:13),
                       var1 = rep(c("a", "b"), each=10), 
                       var2 = rnorm(20))

my_data_new <- with(my_data,
                      data.frame ( time = time[var1 =="a"], 
                                  var2a = var2[var1 == "a"], 
                                  var2b = var2[var1 == "b"]))
Run Code Online (Sandbox Code Playgroud)

我尝试了与transmute()类似的语法,并获得以下错误消息

Error: wrong result size (10), expected 20 or 1
Run Code Online (Sandbox Code Playgroud)

谢谢!

akr*_*run 5

尝试

library(tidyr)
res <- spread(my_data, var1, var2)
colnames(res) <- colnames(my_data_new)
identical(res, my_data_new)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

或者您可以使用renamefrom dplyr来更改列名称(由@Richard Scriven建议)

library(dplyr)
library(tidyr)
spread(my_data, var1, var2)%>%
                        rename(var2a=a, var2b=b)
Run Code Online (Sandbox Code Playgroud)