首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用间接变量的rowSums (即使用字符串变量分配列号)

使用间接变量的rowSums (即使用字符串变量分配列号)
EN

Stack Overflow用户
提问于 2015-02-16 04:46:11
回答 1查看 220关注 0票数 0

我仍然是一个在R的新手,但享受到目前为止的旅程。我试图将每周一次的列组合成季度,并尝试创建一个更优雅的解决方案,而不是创建单独的行来分配值。

因此,我创建了一个包含列范围的值列表,例如Q1 <- 5:9、Q2 <- 10:22等等。在阅读了原始的数据框架后,我想创建一个新的数据框架,它以Q1为变量,包含第5-9列的总和,Q2的总数为10:22等等。问题是,rowSums不喜欢我使用变量来表示实际范围。

这就是我试图实现的目标,sval包含原始的每周数据,qsval包含季度总计:

代码语言:javascript
复制
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])))
}

这有可能吗?给出的错误消息是:

代码语言:javascript
复制
Error in rowSums(sval, na.rm = F, get(period[i])) : invalid 'dims' 

任何建议都将不胜感激!谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 05:05:12

在缺乏可重复的数据的情况下,下面是一个希望您能够适应具体情况的示例:

代码语言:javascript
复制
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  5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28534680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档