楼主: wyfhdl
2840 7

[问答] R语言 for 循环 [推广有奖]

  • 5关注
  • 15粉丝

已卖:1502份资源

副教授

26%

还不是VIP/贵宾

-

威望
0
论坛币
2526 个
通用积分
138.3977
学术水平
27 点
热心指数
33 点
信用等级
23 点
经验
60603 点
帖子
260
精华
0
在线时间
1248 小时
注册时间
2009-12-21
最后登录
2023-2-21

楼主
wyfhdl 发表于 2015-6-9 01:36:53 |AI写论文
30论坛币

GSL1是数据框
flName是 GSL1中的 因子,有4个level : A B C D
djName是GSL1中的 因子,有 4个 level : 特级 一级 二级 三级
PRICE是 GSL1中的 数值型

实际变量更多,只列举以上两个

我试图写一个for的循环,涉及到dplyr的包,希望在group_by中分别设定 djName 和flName计算,代码如下

  1. library(dplyr)
  2. VAR<-c("djName","flName")
  3. for (i in 1:2)
  4. {GSL1%>%
  5. group_by(VAR[i])%>%
  6. summarise(Val=sum(PRICE,na.rm=TRUE))%>%
  7. print()
  8. }
复制代码
结果是
  1. Source: local data frame [1 x 2]

  2.   VAR[i]        Val
  3. 1 flName 1524384459
  4. Source: local data frame [1 x 2]

  5.   VAR[i]        Val
  6. 1 djName 1524384459
复制代码
我的理解是,VAR被当成一个字符处理了

然后尝试将VAR变成as.symbol(VAR),运行提示
  1. Error in mutate_impl(.data, dots) : object 'flName' not found
复制代码

请教这个要怎么解决



关键词:For R语言 Library Source object library
犯我华者 虽远必诛

沙发
g4730380 发表于 2015-6-9 01:36:54
  1. library(dplyr)
  2. sym <- lapply(c("djName", "flName"), FUN = as.symbol)
  3. flName = factor(c("A", "B", "C", "D", "A", "B", "C", "D", "A", "B"))
  4. djName = factor(c("best", "first", "second", "third", "best", "first", "second", "third", "second", "third"))
  5. price = rnorm(10)
  6. df = data.frame(flName, djName, price)
  7. for (s in sym) {
  8.   print(df %>% group_by_(.dots = s) %>% summarise(sum = sum(price, rm = TRUE))) }
复制代码

藤椅
g4730380 发表于 2015-6-9 03:08:37
  1. VAR <- lapply(VAR, as.symbol)
复制代码
循环里面写:
  1. group_by(.dots=VAR)
复制代码

板凳
wyfhdl 发表于 2015-6-9 10:26:03
g4730380 发表于 2015-6-9 03:08
循环里面写:
似乎不行,能麻烦你把完整的循环写出来么

报纸
wyfhdl 发表于 2015-6-9 10:26:05
g4730380 发表于 2015-6-9 03:08
循环里面写:
似乎不行,能麻烦你把完整的循环写出来么

地板
wyfhdl 发表于 2015-6-9 10:26:39
g4730380 发表于 2015-6-9 03:08
循环里面写:
似乎不行,能麻烦你把完整的循环写出来么

7
wyfhdl 发表于 2015-6-9 10:27:57
g4730380 发表于 2015-6-9 03:08
循环里面写:
Error: wrong result size (2), expected 7749168 or 1

8
wyfhdl 发表于 2015-6-14 10:22:55
g4730380 发表于 2015-6-9 01:36
感谢,我用的是
  1. Var<-c("brandNAME","o1name","o2name","SBUName","flName","djName","AGE")
  2. National<-list()
  3. for (i in 1:length(Var)){
  4.   National[[i]]<-GSL%>%group_by_(Var[i],"DATE")%>%
  5.   summarise(Val=round(sum(PRICE/10000,na.rm=TRUE),2))%>%
  6.   rename_(Variable=Var[i])%>%dcast(Variable~DATE)
  7. }
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 18:44