楼主: 畅饮0
1897 6

[问答] R语言按条件读取文件内容,需要附上具体语句,谢谢,金币酬谢 [推广有奖]

  • 0关注
  • 0粉丝

大专生

13%

还不是VIP/贵宾

-

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

楼主
畅饮0 发表于 2016-8-3 16:27:38 |AI写论文
10论坛币
R语言读取数据的语句。如果数据文件比较大,读取时间会比较慢,因此想只从源数据文件里读取一部分数据,该怎么做呢?
有什么按条件读取的语句吗?谢谢讲解一下

假设数据文件是这样的(如下):
Date,income,outcome
1940-01-01,10,20
2011-07-02,30,50
2015-04-02,33,55
2016-02-04,70,30
1923-01-01,10,20
2012-07-02,30,50
2010-04-02,33,55
2016-03-05,70,30
···
come.txt (451 Bytes)

我只希望读取到R里面只有2016年的数据。
Date,income,outcome
2016-02-04,70,30
2016-03-05,70,30
2016-06-06,70,30
2016-06-06,70,30
2016-06-06,70,30
2016-03-04,70,30


数据文件已上传附件,请大家帮忙解答一下,谢谢,有金币奖励。

come.txt (451 Bytes)

最佳答案

鸟儿找虫吃 查看完整内容

必须全部读取后再做条件选择
关键词:读取文件 R语言 outcome Income 数据文件 R读取数据 条件读取 income

回帖推荐

鸟儿找虫吃 发表于2楼  查看完整内容

必须全部读取后再做条件选择

沙发
鸟儿找虫吃 发表于 2016-8-3 16:27:39
必须全部读取后再做条件选择

藤椅
victorchan0633 发表于 2016-8-6 16:33:20
貌似没有直接的解决的办法,一个曲线救国的思路是分成多次读入,筛选出目标数据再合并在一起,例如数据有1200行,可以这样读入
  1. ks1<-read.table("come.txt",header=T,nrows=400)
  2. ks2<-read.table("come.txt",header=T,skip=400,nrows=400)
  3. ks3<-read.table("come.txt",header=T,skip=800,nrows=400)
复制代码

再用case when语句把2016年行筛出来就可以了

板凳
xiaoyie 发表于 2016-8-6 20:20:08
对于一个学了7天R的人,为了你的奖励也是拼了。

解决办法如下:

我用.csv打开你的txt文件,打开的时候要注意按提示,以逗号分隔,然后就是正题了

  1. #######把数据中的年月日分开,并按需要提出#####
  2. come=read.csv("come.csv")
  3. come=data.frame(come)
  4. b=as.vector(come$date)
  5. c=unlist(strsplit(b,split="/"))
  6. date=matrix(as.numeric(c),ncol=3,byrow=T)
  7. date=data.frame(date)
  8. names(date)=c("year","month","day")
  9. come$year=date$year
  10. year_2016=subset(come,year==2016)

  11. ########################
复制代码


看着给吧

报纸
xiaoyie 发表于 2016-8-6 20:25:28
把转好的come.csv发给你,你验证一下

come.zip
下载链接: https://bbs.pinggu.org/a-2081316.html

263 Bytes

需要: 5 个论坛币  [购买]

本附件包括:

  • come.csv

地板
xiaoyie 发表于 2016-8-6 20:26:22
  1. #######把数据中的年月日分开,并按需要提出#####
  2. come=read.csv("come.csv")
  3. come=data.frame(come)
  4. b=as.vector(come$date)
  5. c=unlist(strsplit(b,split="/"))
  6. date=matrix(as.numeric(c),ncol=3,byrow=T)
  7. date=data.frame(date)
  8. names(date)=c("year","month","day")
  9. come$year=date$year
  10. year_2016=subset(come,year==2016)

  11. ########################
复制代码

7
xiaoyie 发表于 2016-8-7 00:14:34
  1. #######把数据中的年月日分开,并按需要提出#####
  2. come=read.csv("come.csv")#读取文件
  3. come=data.frame(come)#把come定义为数据框
  4. b=as.vector(come$date)#把date列转为向量   
  5. c=unlist(strsplit(b,split="/"))#按“/”进行分割
  6. date=matrix(as.numeric(c),ncol=3,byrow=T)#将c转为三列的数值型矩阵
  7. date=data.frame(date)#定义数据框
  8. names(date)=c("year","month","day")#命名
  9. come$year=date$year#赋值
  10. year_2016=subset(come,year==2016)#选出2016年的数据

  11. ########################
复制代码

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

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