我仍然是一个在R的新手,但享受到目前为止的旅程。我试图将每周一次的列组合成季度,并尝试创建一个更优雅的解决方案,而不是创建单独的行来分配值。
因此,我创建了一个包含列范围的值列表,例如Q1 <- 5:9、Q2 <- 10:22等等。在阅读了原始的数据框架后,我想创建一个新的数据框架,它以Q1为变量,包含第5-9列的总和,Q2的总数为10:22等等。问题是,rowSums不喜欢我使用变量来表示实际范围。
这就是我试图实现的目标,sval包含原始的每周数据,qsval包含季度总计:
Q110 <- 5:9
Q210 <- 10:22
Q310 <- 23:35
Q410 <- 36:48
Q111 <- 49:61
Q211 <- 62:74
Q311 <- 75:87
Q411 <- 88:100
qsval <- sval[,c(1:4)] # Copying the first four columns from the weekly data
period <- c('Q110','Q210','Q310','Q410','Q111','Q211','Q311','Q411')
for (i in 1:8) {
assign(qsval$period[i], rowSums(sval,na.rm=F, get(period[i])))
}这有可能吗?给出的错误消息是:
Error in rowSums(sval, na.rm = F, get(period[i])) : invalid 'dims' 任何建议都将不胜感激!谢谢。
发布于 2015-02-16 05:05:12
在缺乏可重复的数据的情况下,下面是一个希望您能够适应具体情况的示例:
set.seed(1) # just to make the random data reproducible
sval <- data.frame(replicate(6,sample(1:3)))
# X1 X2 X3 X4 X5 X6
#1 1 3 3 1 3 2
#2 3 1 2 3 1 3
#3 2 2 1 2 2 1
Qlist <- list(Q1=1:3,Q2=4:6)
qsval <- data.frame(lapply(Qlist, function(x) rowSums(sval[x]) ))
# Q1 Q2
#1 7 6
#2 6 7
#3 5 5https://stackoverflow.com/questions/28534680
复制相似问题