Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-用dplyr重复_R_Dplyr_Rep - Fatal编程技术网

R-用dplyr重复

R-用dplyr重复,r,dplyr,rep,R,Dplyr,Rep,为了将我的“长压缩”格式数据转换为宽格式,我需要使用rep函数 我不知道如何将它集成到dplyr流中 这是我需要使用的重复 dta1 = as.data.frame(cbind(rep(dta$id, dta$duration), rep(dta$act, dta$duration) ) ) colnames(dta1) <- c('id', 'act') 你知道我怎么把这两个代码放在一起吗 数据 dta = structure(list(id = c("B10001N1", "B10

为了将我的“长压缩”格式数据转换为宽格式,我需要使用
rep
函数

我不知道如何将它集成到
dplyr
流中

这是我需要使用的重复

dta1 = as.data.frame(cbind(rep(dta$id, dta$duration), rep(dta$act, dta$duration) ) ) 
colnames(dta1) <- c('id', 'act')
你知道我怎么把这两个代码放在一起吗

数据

dta = structure(list(id = c("B10001N1", "B10001N1", "B10001N1", "B10001N1", 
                  "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", 
                  "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", 
                  "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", 
                  "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", 
                  "B10001N2", "B10001N3", "B10001N3", "B10001N3", "B10001N3", "B10001N3", 
                  "B10001N3", "B10001N3", "B10001N3", "B10001N3", "B10001N3", "B10001N3", 
                  "B10001N3", "B10001N3", "B10001N4", "B10001N4", "B10001N4", "B10001N4", 
                  "B10001N4", "B10001N4", "B10001N4", "B10001N4", "B10001N4", "B10001N4", 
                  "B10001N4", "B10001N4", "B10001N4"), act = c("-11", "1704", "1302", 
                                                               "1301", "1507", "603", "1301", "101", "502", "1704", "1507", 
                                                               "1404", "8888", "603", "1507", "101", "-11", "1302", "1301", 
                                                               "1507", "704", "101", "1704", "1704", "3102", "1002", "1704", 
                                                               "3101", "101", "-11", "1704", "1302", "1302", "1507", "603", 
                                                               "2902", "3201", "812", "1704", "1704", "3701", "101", "-11", 
                                                               "1302", "1301", "3101", "1001", "1507", "1006", "2101", "2902", 
                                                               "1704", "8888", "1704", "1302"), duration = c(30, 570, 5, 30, 
                                                                                                             25, 3, 12, 165, 30, 10, 5, 20, 70, 45, 180, 240, 570, 30, 30, 
                                                                                                             20, 25, 95, 70, 20, 20, 20, 60, 45, 435, 30, 30, 570, 90, 30, 
                                                                                                             15, 5, 40, 60, 240, 60, 30, 240, 600, 15, 45, 15, 75, 30, 150, 
                                                                                                             60, 30, 60, 210, 60, 90)), row.names = c(NA, 55L), class = "data.frame", .Names = c("id", 
                                                                                                                                                                                                 "act", "duration"))
试一试

试一试

试一试

试一试



为什么不干脆
dta[rep(1:nrow(dta),dta$duration),-3]]>%…
?太好了-你能回答我可以结束这个问题吗?感谢使用类似的方法处理splitstackshape/data.table(v1.9.5)
dcast(setDT(expandRows(dta,'duration'))[,Time:=1.N,id],id~Time,value.var='act')
为什么不直接使用
dta[rep(1:nrow(dta),dta$duration),-3]>%…
?很好-你能把它作为一个答案,我可以结束这个问题吗?感谢使用类似的方法处理splitstackshape/data.table(v1.9.5)
dcast(setDT(expandRows(dta,'duration'))[,Time:=1.N,id],id~Time,value.var='act')
为什么不直接使用
dta[rep(1:nrow(dta),dta$duration),-3]>%…
?很好-你能把它作为一个答案,我可以结束这个问题吗?感谢使用类似的方法处理splitstackshape/data.table(v1.9.5)
dcast(setDT(expandRows(dta,'duration'))[,Time:=1.N,id],id~Time,value.var='act')
为什么不直接使用
dta[rep(1:nrow(dta),dta$duration),-3]>%…
?很好-你能把它作为一个答案,我可以结束这个问题吗?感谢使用类似的方法处理splitstackshape/data.table(v1.9.5)
dcast(setDT(expandRows(dta,'duration'))[,Time:=1.N,id],id~Time,value.var='act')
很好的解决方案+1.我有点困惑,为什么OP的方法比提议的解决方案快得多。你介意给我一个见解吗?很好。看起来可读性更好,但在这种情况下,由于内存分配更大,效率更低。然而,我不知道R的东西是如何在引擎盖下工作的。这样一个优雅的方法是缓慢的,这有点令人困惑。幸运的是,我们刚刚发现对
data.table
执行相同的子集设置操作要快得多。很好的解决方案+1.我有点困惑,为什么OP的方法比提议的解决方案快得多。你介意给我一个见解吗?很好。看起来可读性更好,但在这种情况下,由于内存分配更大,效率更低。然而,我不知道R的东西是如何在引擎盖下工作的。这样一个优雅的方法是缓慢的,这有点令人困惑。幸运的是,我们刚刚发现对
data.table
执行相同的子集设置操作要快得多。很好的解决方案+1.我有点困惑,为什么OP的方法比提议的解决方案快得多。你介意给我一个见解吗?很好。看起来可读性更好,但在这种情况下,由于内存分配更大,效率更低。然而,我不知道R的东西是如何在引擎盖下工作的。这样一个优雅的方法是缓慢的,这有点令人困惑。幸运的是,我们刚刚发现对
data.table
执行相同的子集设置操作要快得多。很好的解决方案+1.我有点困惑,为什么OP的方法比提议的解决方案快得多。你介意给我一个见解吗?很好。看起来可读性更好,但在这种情况下,由于内存分配更大,效率更低。然而,我不知道R的东西是如何在引擎盖下工作的。这样一个优雅的方法是缓慢的,这有点令人困惑。幸运的是,我们刚刚发现对
data.table
执行相同的子集设置操作要快得多。
dta = structure(list(id = c("B10001N1", "B10001N1", "B10001N1", "B10001N1", 
                  "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", 
                  "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", "B10001N1", 
                  "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", 
                  "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", "B10001N2", 
                  "B10001N2", "B10001N3", "B10001N3", "B10001N3", "B10001N3", "B10001N3", 
                  "B10001N3", "B10001N3", "B10001N3", "B10001N3", "B10001N3", "B10001N3", 
                  "B10001N3", "B10001N3", "B10001N4", "B10001N4", "B10001N4", "B10001N4", 
                  "B10001N4", "B10001N4", "B10001N4", "B10001N4", "B10001N4", "B10001N4", 
                  "B10001N4", "B10001N4", "B10001N4"), act = c("-11", "1704", "1302", 
                                                               "1301", "1507", "603", "1301", "101", "502", "1704", "1507", 
                                                               "1404", "8888", "603", "1507", "101", "-11", "1302", "1301", 
                                                               "1507", "704", "101", "1704", "1704", "3102", "1002", "1704", 
                                                               "3101", "101", "-11", "1704", "1302", "1302", "1507", "603", 
                                                               "2902", "3201", "812", "1704", "1704", "3701", "101", "-11", 
                                                               "1302", "1301", "3101", "1001", "1507", "1006", "2101", "2902", 
                                                               "1704", "8888", "1704", "1302"), duration = c(30, 570, 5, 30, 
                                                                                                             25, 3, 12, 165, 30, 10, 5, 20, 70, 45, 180, 240, 570, 30, 30, 
                                                                                                             20, 25, 95, 70, 20, 20, 20, 60, 45, 435, 30, 30, 570, 90, 30, 
                                                                                                             15, 5, 40, 60, 240, 60, 30, 240, 600, 15, 45, 15, 75, 30, 150, 
                                                                                                             60, 30, 60, 210, 60, 90)), row.names = c(NA, 55L), class = "data.frame", .Names = c("id", 
                                                                                                                                                                                                 "act", "duration"))
library(dplyr)
library(tidyr)
dta[rep(1:nrow(dta), dta$duration), -3] %>%
  group_by(id) %>% 
  mutate( Time = 1:n() ) %>%
  spread(Time, act)