将一列拆分为若干列,并将它们转换为r中的一行
请帮助我如何编码以从数据中获得以下结果。。我有一个包含1000000多行的数据帧,其中包含非连续NA。我想把TA_DAY列拆分成这样:“1~5,6~10…继续..结束”直到最后一行,然后像下面的一样合并它们。。。有人有什么想法或建议吗?哪个功能?我应该用它吗?提前感谢你,G日将一列拆分为若干列,并将它们转换为r中的一行,r,data.table,sqldf,subset,R,Data.table,Sqldf,Subset,请帮助我如何编码以从数据中获得以下结果。。我有一个包含1000000多行的数据帧,其中包含非连续NA。我想把TA_DAY列拆分成这样:“1~5,6~10…继续..结束”直到最后一行,然后像下面的一样合并它们。。。有人有什么想法或建议吗?哪个功能?我应该用它吗?提前感谢你,G日 for(i in 0:161){ aa[i+1]<-melt(dt4$WSmax[1:12+(12*i)]) } list <- unlist(aa, recursive = FALSE) df <
for(i in 0:161){
aa[i+1]<-melt(dt4$WSmax[1:12+(12*i)])
}
list <- unlist(aa, recursive = FALSE)
df <- do.call("rbind", aa)
ID YEAR PRICE this is the one that i need
-------------- -------------------
A 2001 19.45 19.45 98.23 12.33
A 2003 98.23 NA 77.4 32.33
B 2009 12.33 =>
C 2001 NA
C 2004 77.4
D 1999 32.33
.
.
for(0:161中的i){
aa[i+1]
数据
dat我不完全清楚需要什么,因为描述似乎与样本输出不一致。我假设除了PRICE
之外的所有列都可以忽略,我们希望PRICE
的每个值以及前面3个位置的值,因为这给出了样本输出。在这种情况下,动物园的rollapply可以做到这一点。这里有两种不同的方法:
library(zoo)
t(rollapply(dat$PRICE, 4, function(x) c(x[1], x[4])))
## [,1] [,2] [,3]
## [1,] 19.45 98.23 12.33
## [2,] NA 77.40 32.33
使用rollapply执行此操作的另一种方法:
t(rollapply(dat$PRICE, list(c(0, 3)), identity))
## [,1] [,2] [,3]
## [1,] 19.45 98.23 12.33
## [2,] NA 77.40 32.33
我在您之前的帖子中评论了使用dput
显示数据集。在阅读了预期输出中的描述1~5th
,6~10th..
后,还不清楚,您正在输入价格1和4、2和5等。感谢您的评论…我只是通过阅读您的评论了解了dput功能。dput
输出是我粘贴到解决方案中的输出。
library(zoo)
t(rollapply(dat$PRICE, 4, function(x) c(x[1], x[4])))
## [,1] [,2] [,3]
## [1,] 19.45 98.23 12.33
## [2,] NA 77.40 32.33
t(rollapply(dat$PRICE, list(c(0, 3)), identity))
## [,1] [,2] [,3]
## [1,] 19.45 98.23 12.33
## [2,] NA 77.40 32.33