【发布时间】:2014-11-26 18:48:13
【问题描述】:
我想使用 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"]))
我用 transmute() 尝试过类似的语法并得到以下错误消息
Error: wrong result size (10), expected 20 or 1
谢谢!
【问题讨论】:
-
您可以使用
do,但它不是很优雅,即。my_data %>% do(data.frame( time=.$time[.$var1=='a'], var2a=.$var2[.$var1=='a'], var2b=.$var2[.$var1=='b'])) -
看来你真的用错了工具。你真的在重塑你的数据。因此
melt()/cast()来自reshape2或gather()/spread()来自tidyr会更合适。