mch*_*gun 29 r header skip read.csv
我有一个带有两个标题行的CSV文件,第一行我想成为标题,但第二行我要丢弃.如果我执行以下命令:
data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
第一行成为标题,文件的第二行成为我数据框的第一行:
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
Run Code Online (Sandbox Code Playgroud)
我想跳过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
Run Code Online (Sandbox Code Playgroud)
我尝试过,data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE, skip = 1)
但返回:
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
Run Code Online (Sandbox Code Playgroud)
标题行来自我的CSV文件的第二行,而不是第一行.
谢谢.
Pau*_*tra 48
这应该做的伎俩:
all_content = readLines("file.csv")
skip_second = all_content[-2]
dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
第一步使用readLines
将整个文件读入列表,其中列表中的每个项目代表文件中的一行.接下来,您使用R中的负索引表示丢弃第二行select all but this index
.最后,我们提供这些数据以read.csv
将其处理成a data.frame
.
您可以直接从数据框中删除标题后的第一行,以允许您在一行中执行此操作:
df<-read.csv("test.txt",header=T)[-1,]
Run Code Online (Sandbox Code Playgroud)
如果我的数据文件“test.txt”如下:
var1, var2
units1, units2
2.3,6.8
4.5,6.7
Run Code Online (Sandbox Code Playgroud)
这给了我
> read.csv("test.txt",header=T)[-1,]
var1 var2
2 2.3 6.8
3 4.5 6.7
Run Code Online (Sandbox Code Playgroud)
这完全回答了您的问题,但只是为了概括答案,您还可以通过这种方式跳过第N行到第M行:
df<-read.csv("test.txt",header=T)[-N:-M,]
Run Code Online (Sandbox Code Playgroud)
其中 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
Run Code Online (Sandbox Code Playgroud)