首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for循环中向数据框添加列

在for循环中向数据框添加列
EN

Stack Overflow用户
提问于 2012-08-05 05:11:06
回答 1查看 2.4K关注 0票数 1

如何在for循环中将变量添加到数据帧中?

我想创建一个dataframe,其中每一列都是2009到2011年间某个地区的收入。

代码语言:javascript
复制
regions = c('A','APAC','CEE','LATAM','ME', 'NA', 'WE')

# Loop through all regions, and add them as a column in my dataframe.
for (region in regions) {

  # create the query string
  query_string  = sprintf("SELECT date, revenue
                  FROM country_revenue
                  WHERE region = '%s'
                  AND date>='2009-01-01'
                  AND date<='2011-12-31'
                  ORDER BY date ASC
                  LIMIT 2000", region)

  # Query the database, and assign the result to a variable.
  assign(sprintf('rev.%s',region), mysql_query(query_string))

  # I only want the 2nd column returned from my query above. 
  # THIS IS THE PART THAT FAILS. Error in sprintf("rev.%s", region)[, 2] : incorrect number of dimensions
  sprintf('rev.%s',region) = sprintf('rev.%s',region)[,2]

  # Add this variable to my data frame.
  revenue = cbind(revenue, sprintf('rev.%s',region))
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-05 05:33:04

这将是相当低效的。为什么不返回region作为SQL调用的一部分呢?

代码语言:javascript
复制
foo <- data.frame(date = rep(Sys.Date() + 0:4, 7),
                  revenue = runif(7*5),
                  region = rep(c('A','APAC','CEE','LATAM','ME', 'NA', 'WE'), 
                               each = 5))

> head(foo)
        date   revenue region
1 2012-08-04 0.1170867      A
2 2012-08-05 0.6173779      A
3 2012-08-06 0.9860934      A
4 2012-08-07 0.1344043      A
5 2012-08-08 0.5570391      A
6 2012-08-04 0.5844136   APAC

这是一个简单的dcast()调用,用于将数据整形为所需的格式。

代码语言:javascript
复制
> require(reshape2)
> dcast(foo, date ~ region, value.var = "revenue")
        date         A      APAC       CEE      LATAM         ME
1 2012-08-04 0.1170867 0.5844136 0.8011066 0.82864796 0.85856770
2 2012-08-05 0.6173779 0.7893151 0.3991653 0.41268349 0.05925445
3 2012-08-06 0.9860934 0.2812308 0.2272009 0.04599903 0.82367709
4 2012-08-07 0.1344043 0.7513777 0.8022602 0.96933913 0.61501816
5 2012-08-08 0.5570391 0.2915478 0.4601065 0.82996462 0.83779233
         NA         WE
1 0.4833374 0.25713295
2 0.9574843 0.22122544
3 0.5575645 0.03492411
4 0.2962364 0.51973593
5 0.9020639 0.95506837
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11812034

复制
相关文章

相似问题

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