博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 读csv跳过标题,关于r:read.csv,标题位于第一行,跳过第二行
阅读量:7251 次
发布时间:2019-06-29

本文共 2264 字,大约阅读时间需要 7 分钟。

本问题已经有最佳答案,请猛点这里访问。

我有一个包含两个标题行的CSV文件,第一行我想成为标题,但第二行我想放弃。 如果我执行以下命令:

data

第一行成为标题,文件的第二行成为数据框的第一行:

Xaaaaaaaaa       X X.1     Xbbbbbbbbbb     X.2 X.3

1         Date PX_LAST  NA         Date PX_LAST  NA

2   31/12/2002  38.855  NA   31/12/2002  19.547  NA

3   02/01/2003  38.664  NA   02/01/2003  19.547  NA

4   03/01/2003  40.386  NA   03/01/2003  19.547  NA

5   06/01/2003  40.386  NA   06/01/2003  19.609  NA

6   07/01/2003  40.195  NA   07/01/2003  19.609  NA

我想跳过CSV文件的第二行,只是得到

X1.HK.Equity       X X.1 X2.HK.Equity     X.2 X.3

2   31/12/2002  38.855  NA   31/12/2002  19.547  NA

3   02/01/2003  38.664  NA   02/01/2003  19.547  NA

4   03/01/2003  40.386  NA   03/01/2003  19.547  NA

5   06/01/2003  40.386  NA   06/01/2003  19.609  NA

6   07/01/2003  40.195  NA   07/01/2003  19.609  NA

我尝试了data ,但是返回:

Date PX_LAST  X     Date.1 PX_LAST.1 X.1

1 31/12/2002  38.855 NA 31/12/2002    19.547  NA

2 02/01/2003  38.664 NA 02/01/2003    19.547  NA

3 03/01/2003  40.386 NA 03/01/2003    19.547  NA

4 06/01/2003  40.386 NA 06/01/2003    19.609  NA

5 07/01/2003  40.195 NA 07/01/2003    19.609  NA

6 08/01/2003  40.386 NA 08/01/2003    19.547  NA

标题行来自我的CSV文件的第二行,而不是第一行。

谢谢。

您可以尝试两步法。 第一步,从没有标题的第三行开始读取数据。 仅将第一行作为字符向量读取,然后将字符向量添加为数据名称。

我检查了您的代码,这一行对我有用:df

这应该可以解决问题:

all_content = readLines("file.csv")

skip_second = all_content[-2]

dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE)

使用readLines的第一步将整个文件读入一个列表,其中列表中的每个项目都代表文件中的一行。 接下来,使用R中的负索引表示select all but this index的事实来舍弃第二行。 最后,我们将此数据输入到read.csv以将其处理为data.frame。

感谢您的回复。 最后一行dat = read.csv(skip_second, header = TRUE, stringsAsFactors = FALSE)给我一个错误Error in file(file,"rt") : invalid description argument。 如何获取read.csv接受变量而不是文件路径?

另外使用textConnection。

作为Paul的负责人,这种方法可以很好地处理较小的文件(小于5MB),但是对于较大的文件却有麻烦。 我问了一个问题,并在下面的较大文件上正常工作后提供了答案:stackoverflow.com/questions/24921387/

您可以直接从数据帧中删除标头后的第一行,以允许您在一行中执行以下操作:

df

如果我的数据文件" test.txt"如下:

var1, var2

units1, units2

2.3,6.8

4.5,6.7

这给了我

> read.csv("test.txt",header=T)[-1,]

var1 var2

2  2.3  6.8

3  4.5  6.7

这可以准确地回答您的问题,但是为了概括答案,您还可以通过以下方式跳过第N行到第M行:

df

其中N和M当然是整数。

注意:此方法会将所有列转换为因数。

str(read.csv("test.csv", header = TRUE)[-1,])

# 'data.frame': 2 obs. of  2 variables:

#   $ var1: Factor w/ 3 levels"2.3","4.5","units1": 1 2

#   $ var2: Factor w/ 3 levels" units2","6.7",..: 3 2

在Linux(或Mac)上,您可以利用能够在data.table::fread中使用linux命令的优势,因此

data.table::fread("sed -e '2d' myfile.txt", data.table = F)

将跳过第二行。

转载地址:http://diqbm.baihongyu.com/

你可能感兴趣的文章
诡异的bug: tcsh陷入死循环
查看>>
java-第一章-上机练习-04
查看>>
Active Directory 基础 (1)
查看>>
xml地图生成网址
查看>>
Python 练习1
查看>>
TCExam文件代码注释分析(后台首页admin/code/index.php)
查看>>
Finereport在企业级BI分析中的应用
查看>>
linux内核参数注释与优化
查看>>
linux 2.6x内核升级
查看>>
pxe
查看>>
NFS网络文件系统安装
查看>>
网页嵌入自动生成当前网页二维码图片代码
查看>>
Linux时间同步服务
查看>>
Python基础-----列表、元组、集合(2)
查看>>
iptables详解
查看>>
Redisson官方文档 - 12. 独立节点模式
查看>>
AD域笔记
查看>>
HTTP协议详解
查看>>
apache实现多端囗多域名配置
查看>>
Linux命令(15):type命令
查看>>