【发布时间】:2015-10-26 02:22:25
【问题描述】:
我有以下数据集:
data <- data.frame(id = c(6,7,96,216,216,384),
date = c("2003-03-27", "2003-03-31", "2001-08-01", "2009-05-26", "2009-05-26", "2001-04-05"),
description = rep("code"),
variable = rep("schedule"),
value = c(388,45,95,390,12,10))
我正在尝试翻译一些使用 plyr 和 reshape2 的旧代码,而不是使用 dplyr 和 tidyr(旧代码需要永远运行)。
这是旧代码:
data$num <- as.numeric(0)
data1 <- ddply(data, .(id, date), transform, num = cumsum(num+1))
data2 <- within(data1, id2 <- interaction(variable, num))
data3 <- dcast(data2, id + date + description ~ id2)
data3
输出如下:
id date description schedule.1 schedule.2
1 6 2003-03-27 code 388 NA
2 7 2003-03-31 code 45 NA
3 96 2001-08-01 code 95 NA
4 216 2009-05-26 code 390 12
5 384 2001-04-05 code 10 NA
我的尝试并没有成功,我使用了 group_by,然后尝试使用 num = cumsum(num+1) 改变一个新变量,但它只是对每一行进行编号 1、2、3、4 等。
我的第二个猜测是对 id2 变量使用 unite,但这也没有用。
任何帮助将不胜感激!
【问题讨论】:
-
鉴于您的输入数据框,您的输出没有多大意义。你确定这正是你得到的,而不仅仅是一般结构的例子吗?
-
@joran 现在应该是正确的......我在原始帖子后大约 2 分钟进行了编辑以修复错误。