楼主: xuenesta
7098 10

[问答] 两列数据读取时成为一列怎么办? [推广有奖]

  • 2关注
  • 2粉丝

副教授

23%

还不是VIP/贵宾

-

威望
0
论坛币
437 个
通用积分
67.0719
学术水平
6 点
热心指数
3 点
信用等级
0 点
经验
61814 点
帖子
382
精华
0
在线时间
785 小时
注册时间
2010-12-27
最后登录
2025-8-5

楼主
xuenesta 发表于 2016-2-12 09:59:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
存储的两列数据在读取时变成一列,请问各位前辈应该怎么办。

具体如下。

存储的数据为txt格式
"1" "2013-10-10" 3.13852672326025e-05
"2" "2013-10-11" 3.10365429430613e-05
"3" "2013-10-15" 0.000821123682692567
"4" "2013-10-16" 3.17399020825352e-05
"5" "2013-10-17" 3.13852672326025e-05
"6" "2013-10-18" 0.000124842646256066
"7" "2013-10-21" 3.00245450657034e-05
"8" "2013-10-22" 3.00245450657034e-05
"9" "2013-10-23" 3.03563071553514e-05


读取函数为
zjhk<-read.table("路径",header=T)

无论sep="",或者sep=",",或者不设置,读出来的数据都是
     date.rvbandi
1 1 2013-10-10 3.13852672326025e-05
2 2 2013-10-11 3.10365429430613e-05
3 3 2013-10-15 0.000821123682692567
4 4 2013-10-16 3.17399020825352e-05
5 5 2013-10-17 3.13852672326025e-05
6 6 2013-10-18 0.000124842646256066


> zjhk[1,1]
[1] 1 2013-10-10 3.13852672326025e-05


为factor格式。

保存的时候明明是保存的两列,numeric,为什么读取的时候就变成这样了?请各位前辈知道。

不胜感激!谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据读取 怎么办 numeric factor txt格式

沙发
king64 发表于 2016-2-12 11:27:09
你使用read.table时试一试其他的参数。

read.table命令,就看到了关于数据输入函数的说明。对read.table,使用格式是这样的;
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", row.names, col.names,
as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text)
参数很多,最常用的也就几个,重写如下:
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", skip = 0,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#")
file表示要读取的文件。file可以是①绝对路径或者相对路径,但是一定要注意,因为在R语言中\是转义符,所以路径分隔符必须写成\\,比如“C:\\myfile\\myfile.txt”。②可以使剪切板的内容。③使用file.choose(),弹出对话框,让你选择文件位置。强烈推荐使用第三种方法,免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误!例如:read.table(file.choose(),...)。
header来确定数据文件中第一行是不是标题。默认F,即认为数据文件没有标题,也即认为第一行就开始是数据了!例如:
姓名 年龄收入
小六 12 350
如果header=F,读进来的第一行数据是“姓名 年龄收入”,header=T,读进来的第一行是“小六 12 350”。
sep指定分隔符,默认是空格。quote是引号,默认就是双引号。dec是小数点的表示,默认就是一个点。skip是确定是否跳过某些行。strip.white确定是否消除空白字符。blank.lines.skip确定是否跳过空白行。comment.char指定用于表示注释的引导符号。
一般情况下,我们只需要默认值就够了。
下面是一个简单的例子,本例子中,首行是标题而不是数据,使用\t进行分割而不是空格。读取后的数据变量设为mydata。所以,可以写出读取方式为:
mydata<-read.table(file.choose(),header=T,sep="\t")
其中,T和TRUE的效果是一样的,正如F和FALSE的效果是一样的。
http://www.dataguru.cn/article-2184-1.html
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
xuenesta + 5 + 1 + 1 好的意见建议

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
蓝色 发表于 2016-2-12 12:00:48
  1. > data <- read.table("data001.txt", header = T)
  2. > data
  3.   id       time            x
  4. 1  1 2013-10-10 3.138527e-05
  5. 2  2 2013-10-11 3.103654e-05
  6. 3  3 2013-10-15 8.211237e-04
  7. 4  4 2013-10-16 3.173990e-05
  8. 5  5 2013-10-17 3.138527e-05
  9. 6  6 2013-10-18 1.248426e-04
  10. 7  7 2013-10-21 3.002455e-05
  11. 8  8 2013-10-22 3.002455e-05
  12. 9  9 2013-10-23 3.035631e-05
  13. > names(data)
  14. [1] "id"   "time" "x"   
  15. > str(data)
  16. 'data.frame':        9 obs. of  3 variables:
  17. $ id  : int  1 2 3 4 5 6 7 8 9
  18. $ time: Factor w/ 9 levels "2013-10-10","2013-10-11",..: 1 2 3 4 5 6 7 8 9
  19. $ x   : num  3.14e-05 3.10e-05 8.21e-04 3.17e-05 3.14e-05 ...
  20. >
复制代码

没有问题啊


已有 1 人评分经验 收起 理由
李会超 + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

板凳
〃时间宝贵 发表于 2016-2-12 12:21:45
txt文件是制表符分隔的文件,所以sep = '\t';stringAsFactors = FALSE可以避免读入factor格式的文件
总结,read.table('路径', header = T, sep = '\t', stringAsFactors = FALSE即可
已有 1 人评分热心指数 收起 理由
求证1加1 + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

报纸
xuenesta 发表于 2016-2-12 20:33:14
king64 发表于 2016-2-12 11:27
你使用read.table时试一试其他的参数。

read.table命令,就看到了关于数据输入函数的说明。对read.table ...
rvbandi601899.txt (6.52 KB)
已经将参数改为sep="\t",但是情况还是一样。已经上传了文件,不知道可否帮一个忙?谢谢!

地板
xuenesta 发表于 2016-2-12 20:33:57
〃时间宝贵 发表于 2016-2-12 12:21
txt文件是制表符分隔的文件,所以sep = '\t';stringAsFactors = FALSE可以避免读入factor格式的文件
总结 ...
非常感谢!

7
xuenesta 发表于 2016-2-12 20:34:59
蓝色 发表于 2016-2-12 12:00
没有问题啊
可能是我的文件问题吧。已经上传了文件。如果有时间的话不知道能不能帮忙看一下?谢谢!

8
蓝色 发表于 2016-2-12 21:08:22
  1. > rm(list=ls())
  2. > data <- read.table("rvbandi601899.txt", header = T)
  3. > head(data)
  4.         date      rvbandi
  5. 1 2013-06-03 1.064486e-05
  6. 2 2013-06-04 0.000000e+00
  7. 3 2013-06-05 0.000000e+00
  8. 4 2013-06-06 1.078515e-05
  9. 5 2013-06-07 1.085634e-05
  10. 6 2013-06-13 0.000000e+00
  11. > data[1,1]
  12. [1] 2013-06-03
  13. 239 Levels: 2013-06-03 2013-06-04 2013-06-05 2013-06-06 2013-06-07 ... 2014-5-9
  14. > str(data)
  15. 'data.frame':        239 obs. of  2 variables:
  16. $ date   : Factor w/ 239 levels "2013-06-03","2013-06-04",..: 1 2 3 4 5 6 7 8 9 10 ...
  17. $ rvbandi: num  1.06e-05 0.00 0.00 1.08e-05 1.09e-05 ...
  18. > names(data)
  19. [1] "date"    "rvbandi"
  20. >
复制代码


已有 1 人评分论坛币 学术水平 热心指数 收起 理由
xuenesta + 5 + 3 + 3 精彩帖子

总评分: 论坛币 + 5  学术水平 + 3  热心指数 + 3   查看全部评分

9
xuenesta 发表于 2016-2-12 21:58:15
蓝色 发表于 2016-2-12 21:08
原来如此,非常感谢!但是没有看懂,请问第一行的目的是什么?

10
热狗配芥末 发表于 2016-5-7 16:09:25
蓝色 发表于 2016-2-12 21:08
我也出现了楼主的问题,三列数据读取成一列数据,但是我下载楼主的数据进行读取时,却是正确的。请大神帮我看看我的数据为何会出现这种情况好吗?万分感谢 data.txt (2.41 KB)


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

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