楼主: 蒙奇奇啊
7696 9

[问答] R语言如何按条件筛选循环定义新的数据和数据名称(R语言,循环) [推广有奖]

  • 1关注
  • 1粉丝

高中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
771 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
184 点
帖子
9
精华
0
在线时间
50 小时
注册时间
2016-4-8
最后登录
2020-3-30

楼主
蒙奇奇啊 在职认证  发表于 2018-3-29 12:05:47 |AI写论文
50论坛币
如下图我的mydata是这样的,年份是从2003-2014年,因为我想分年份做图,所以需要根据不同的年份定义新的数据,想要达到的效果如下: 2.JPG
请问上面这段话怎么用循环的方式写出来呀,求大神指点,非常感谢!

0329v1.JPG



0329v1.JPG (58.2 KB)

0329v1.JPG

最佳答案

菊花冰糖水 查看完整内容

试试这个。 我只是改了你取自己的方法,我比较喜欢用 dplyr 的包来做。你也可以自行更改
关键词:条件筛选 R语言 Data 非常感谢 循环 R语言 按条件筛选数据 定义
修身养性,戒浮戒躁。

沙发
菊花冰糖水 发表于 2018-3-29 12:05:48
蒙奇奇啊 发表于 2018-3-29 17:03
Error in `[.data.frame`(mydata, mydata$年份 == j) : 选择了未定义的列
  1. library(dplyr)
  2. for (j in seq(2003,2014) ){
  3.   df_name <-  paste('data',j,sep = '')
  4.   assign(df_name, filter(mydata,`年份`==j))
  5. }
复制代码
试试这个。 我只是改了你取自己的方法,我比较喜欢用 dplyr 的包来做。你也可以自行更改
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
小白仔 发表于 2018-3-29 14:17:14
varnames <- paste("data", 2003:2014, sep="")
for (i in 1:12) {
    assign(varnames, value=mydata[mydata$年份==(i+2002)]
}
可以得到结果的
参考了一下: 链接:https://www.zhihu.com/question/45177161/answer/98554133 (作者:王冠嵩)
已有 3 人评分论坛币 热心指数 收起 理由
蒙奇奇啊 + 1 精彩帖子
cheetahfly + 10 热心帮助其他会员
菊花冰糖水 + 1 精彩帖子

总评分: 论坛币 + 10  热心指数 + 2   查看全部评分

板凳
菊花冰糖水 发表于 2018-3-29 14:20:08
  1. for (j in seq(2003,2014) ){
  2.   df_name <-  paste('data',j,sep = '')
  3.   assign(df_name, mydata[mydata$年份==j])
  4.   }
复制代码


和楼上差不多
已有 2 人评分论坛币 热心指数 收起 理由
蒙奇奇啊 + 1 精彩帖子
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

报纸
蒙奇奇啊 在职认证  发表于 2018-3-29 17:03:47
菊花冰糖水 发表于 2018-3-29 14:20
和楼上差不多
Error in `[.data.frame`(mydata, mydata$年份 == j) : 选择了未定义的列

地板
蒙奇奇啊 在职认证  发表于 2018-3-29 17:19:50
小白仔 发表于 2018-3-29 14:17
varnames
这个也是过不去,有报错,按报错调整语法还是有错,暂未解决><

7
菊花冰糖水 发表于 2018-3-29 17:59:02
蒙奇奇啊 发表于 2018-3-29 17:03
Error in `[.data.frame`(mydata, mydata$年份 == j) : 选择了未定义的列
报错是因为我忘记在 mydata[mydata$年份==j]这里加逗号,应该改为mydata[mydata$年份==j, ]

8
蒙奇奇啊 在职认证  发表于 2018-3-29 18:52:58
菊花冰糖水 发表于 2018-3-29 17:59
报错是因为我忘记在 mydata[mydata$年份==j]这里加逗号,应该改为mydata[mydata$年份==j, ]
我又加逗号跑的呢,也是报的那个错误~~><

9
蒙奇奇啊 在职认证  发表于 2018-3-29 18:53:26
菊花冰糖水 发表于 2018-3-29 17:55
试试这个。 我只是改了你取自己的方法,我比较喜欢用 dplyr 的包来做。你也可以自行更改
啊,这个可以了,非常感谢!!!!

10
1482_1572870597 发表于 2020-5-16 14:11:18
fitpoints=SpatialPointsDataFrame(cbind(st_data[m[i],j,"lon"],st_data[m[i],j,"lat"]),data=tempd,
                                      proj4string=CRS(proj4string(st_data[,1])))

报错:Error in `[.data.frame`(x@data, sel, k, drop = FALSE) :
  undefined columns selected


请问下,我这个要怎么改啊

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

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