楼主: kaifengedu
28203 22

[问答] R从Excel读取数据的问题 [推广有奖]

  • 0关注
  • 18粉丝

已卖:641份资源

学科带头人

4%

还不是VIP/贵宾

-

威望
0
论坛币
1671 个
通用积分
475.1680
学术水平
85 点
热心指数
128 点
信用等级
60 点
经验
32847 点
帖子
913
精华
0
在线时间
1638 小时
注册时间
2010-2-2
最后登录
2025-12-27

楼主
kaifengedu 发表于 2014-8-6 11:09:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

Excel中读入数据

有三种方法,

第一种把Excel文件另存为逗号分割符文件(csv格式),然后用read.csv读入;第二种是利用RODBC包,采用命令

library(RODBC)

channel <-odbcConnectExcel("myfile.xls")

mydataframe <- sqlFetch(channel, "MySheet")

odbcClose(channel)

读入;

第三种是对于Excel 2007及以上版本,利用xlsx包读入

library(xlsx)

workbook <-"c:/myworkbook.xlsx"

mydataframe <- read.xlsx(workbook, 1)

注释:第三种方法对Excel早期版本也可以,此时需要把扩展名写为xls即可。

问题:如果第一行是变量名并且其中某个或者某些变量名有空格,第一种和第三种方法读入时空格变成了实心句号,第二种方法还是空格,如何使用第一种和第三种方法不把空格转换为实心句号?


代码如下:

  1. mydf <- read.csv("myfile.csv", head = TRUE)
  2. # mydf
  3. colnames(mydf)
  4. #install.packages("RODBC")
  5. library(RODBC)
  6. channel <- odbcConnectExcel("myfile.xls")
  7. mydataframe <- sqlFetch(channel, "Sheet1")
  8. odbcClose(channel)
  9. colnames(mydataframe)library(xlsx)
  10. workbook <- "myfile1.xlsx"
  11. mydataframe <- read.xlsx(workbook, 1)
  12. colnames(mydataframe)#测试xlsx包对Excle早期版本是否可用
  13. workbook <- "myfile.xls"
  14. mydataframe <- read.xlsx(workbook, 1)
复制代码

示例数据见附件


my.rar (11.17 KB) 本附件包括:

  • myfile.xls
  • myfile1.xlsx
  • myfile.csv


谢谢各位!




二维码

扫码加我 拉你入群

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

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

关键词:EXCEL xcel exce 读取数据 cel Excel

已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
日新少年 + 1 + 1 + 1 精彩帖子
crystal8832 + 10 + 1 + 1 精彩帖子

总评分: 论坛币 + 10  学术水平 + 2  热心指数 + 2  信用等级 + 1   查看全部评分

本帖被以下文库推荐

沙发
Aharach 发表于 2014-8-6 23:49:42
找了找read.csv的帮助,col.names参数貌似能用。但是它要求是字符串向量。如果你能先把数据源里面的变量名先读进R,然后给到read.csv的col.names参数里面,应该能搞定。

或者,

把数据都读进R,单独读进变量名,然后用colnames命名。

2个方法都涉及到单独读变量名,不是很完美。不知道还有没有其它办法。
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
日新少年 + 1 + 1 + 1 精彩帖子
kaifengedu + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

藤椅
crystal8832 学生认证  发表于 2014-8-7 12:35:03
如果数据量不是很大,也可用用read.table(clipborad)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kaifengedu + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
笑意苍凉 发表于 2014-8-8 23:16:59
我觉得最好还是用CSV 如果数据太大用xlsx包有时会出错,而且速度极慢~也可以考虑复制保存成txt格式的,个人感觉更好
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kaifengedu + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
kaifengedu 发表于 2014-8-9 15:53:32
Aharach 发表于 2014-8-6 23:49
找了找read.csv的帮助,col.names参数貌似能用。但是它要求是字符串向量。如果你能先把数据源里面的变量名先 ...
您这个方法是可行的,但是就是您说的需要单独读入,不知道有没有一起读入的方法,谢谢!

地板
kaifengedu 发表于 2014-8-9 15:54:29
crystal8832 发表于 2014-8-7 12:35
如果数据量不是很大,也可用用read.table(clipborad)
多谢,这个也是一个办法,但是不知道能不能解决我的问题!

7
kaifengedu 发表于 2014-8-9 15:55:44
笑意苍凉 发表于 2014-8-8 23:16
我觉得最好还是用CSV 如果数据太大用xlsx包有时会出错,而且速度极慢~也可以考虑复制保存成txt格式的,个人 ...
数据量到多大时xlsx包会出错呢,您遇到过没?

8
crystal8832 学生认证  发表于 2014-8-9 16:21:19
kaifengedu 发表于 2014-8-9 15:54
多谢,这个也是一个办法,但是不知道能不能解决我的问题!
你可以尝试下,先复制,然后再R里使用这个命令,我偶尔会用。

9
质子加速器 学生认证  发表于 2014-8-10 09:07:43
我也觉得把excel另存为csv格式好些

10
笑意苍凉 发表于 2014-8-11 02:33:12
kaifengedu 发表于 2014-8-9 15:55
数据量到多大时xlsx包会出错呢,您遇到过没?
我记不太清楚了,我遇到过一次,是美国房地产的数据,一个州每个county过去50年季度的数据,用xlsx带进去就出错。转成csv瞬间无压力导入。不知道临界值在哪里。不过保存成csv也不麻烦,这样也省得专门读取一个xlsx的package了,何乐而不为呢?
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kaifengedu + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

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

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