DATA.TXT:
Index;Time;
1;2345;
2;1423;
3;5123;
代码:
dat <- read.table('data.txt', skip = 1, nrows = 2, header =TRUE, sep =';')
结果:
X1 X2345
1 2 1423
2 3 5123
我希望标题是索引和时间,如下所示:
Index Time
1 2 1423
2 3 5123
我该怎么做?
答案 0 :(得分:34)
我担心,没有直接的方法来实现这一目标。您要么读完整个表格,然后删除您不想要的行,要么在表格中读取两次,然后再分配标题:
header <- read.table('data.txt', nrows = 1, header = FALSE, sep =';', stringsAsFactors = FALSE)
dat <- read.table('data.txt', skip = 2, header = FALSE, sep =';')
colnames( dat ) <- unlist(header)
答案 1 :(得分:3)
您正在使用跳过错误。试试这个:
dat <- read.table('data.txt', nrows = 2, header =TRUE, sep =';')[-1, ]
答案 2 :(得分:2)
使用fread
中的data.table
的解决方案。
require(data.table)
fread("Data.txt", drop = "V3")[-1]
结果:
> fread("Data.txt", drop = "V3")[-1]
Index Time
1: 2 1423
2: 3 5123
答案 3 :(得分:1)
而不是read.table()
,使用readr
函数,例如read_csv()
,通过管道传输到dplyr::slice()
。
library(readr)
library(dplyr)
dat <- read_csv("data.txt") %>% slice(-1)
它也很快。
答案 4 :(得分:0)
你可以(在大多数情况下)sub
结束;
写一个没有第二行的新文件(由于标题实际上是第一行),并使用{{1而不是read.csv
read.table