楼主: 迷途mitu
8301 9

[问答] 在R里面读取数据时表头相同时怎么读取数据 [推广有奖]

  • 5关注
  • 11粉丝

教授

23%

还不是VIP/贵宾

-

威望
0
论坛币
2399 个
通用积分
21.1086
学术水平
11 点
热心指数
35 点
信用等级
12 点
经验
176 点
帖子
583
精华
0
在线时间
851 小时
注册时间
2010-4-17
最后登录
2022-12-7

5论坛币
用R导入CSV格式数据的时候,相同header的列怎么一起读出来或者区分开来,比如我有一个CSV的数据,第一列第一行是“日期”,第二列第一行是“收益率”,第三列第一行也是“收益率”,我用”$收益率“读出来的只有第二列的数据,怎么才能导出第三列的数据呢?

关键词:读取数据 Head 收益率 EAD der 收益率
沙发
hugebear 发表于 2013-6-19 10:26:56 |只看作者 |坛友微信交流群
从统计上来讲,最好保证列名不同。
你在你的原始文件里改一下列名应该不困难吧,或者先读入数据,再用names()重命名数据框。

使用道具

藤椅
迷途mitu 发表于 2013-6-19 10:29:10 |只看作者 |坛友微信交流群
hugebear 发表于 2013-6-19 10:26
从统计上来讲,最好保证列名不同。
嗯 不过我们做的一张大的表格里面包含了很多月份的数据 每列的名字都是一样的 没有办法解决吗?

使用道具

板凳
hugebear 发表于 2013-6-19 10:31:36 |只看作者 |坛友微信交流群
方便把数据贴出来么?

使用道具

报纸
迷途mitu 发表于 2013-6-19 10:46:14 |只看作者 |坛友微信交流群
hugebear 发表于 2013-6-19 10:31
方便把数据贴出来么?
数据其实还没有整理完,表格的形式是这样的

数据.xls

27 KB

使用道具

地板
qoiqpwqr 发表于 2013-6-19 11:10:43 |只看作者 |坛友微信交流群
你用names看一下列名就可以了。一般重复的列名会被自动命名为“收益率.1”

使用道具

7
迷途mitu 发表于 2013-6-19 11:13:50 |只看作者 |坛友微信交流群
qoiqpwqr 发表于 2013-6-19 11:10
你用names看一下列名就可以了。一般重复的列名会被自动命名为“收益率.1”
哦 我看到了 的确可以 但是我想弄清楚这个的主要原因是我要写循环,但是列名如果是“收益率.1””收益率.2“这样的话该怎么写进循环里面呢?

使用道具

8
hugebear 发表于 2013-6-19 11:17:13 |只看作者 |坛友微信交流群
我建议你先不读入表头(用skip = 2), 再另外为读入的数据框命名。
鉴于列名的周期性,可用如下代码创建表头名(仅作阐释,非完全重复你的数据: 假设每个月都有三个变量名"x1", "x2", "x3", 共12个月, 因此这个表格共36列)。
  1. finance <- read.table("original_file.csv", skip = 2)
  2. x <- list()
  3. for(i in 1:12)
  4. {
  5.   x[[i]] <- character(length = 3)
  6. }

  7. for(i in 1:12)
  8. {
  9.   for(j in 1:3)
  10.   {
  11.    x[[i]][j] <- paste("month", i, "x", j, sep = "")
  12.   }
  13. }

  14. names(finance) <- unlist(x)
复制代码

使用道具

9
迷途mitu 发表于 2013-6-19 11:41:21 |只看作者 |坛友微信交流群
hugebear 发表于 2013-6-19 11:17
我建议你先不读入表头(用skip = 2), 再另外为读入的数据框命名。
鉴于列名的周期性,可用如下代码创建表 ...
这也是一个解决的办法,就是要重新给每一列命名我觉得比较麻烦,还是非常感谢啊!

使用道具

10
daisong 发表于 2013-6-23 23:56:54 |只看作者 |坛友微信交流群
我也想到的是读入的时候header=FALSE

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-11 01:17