数据.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
我怎么做?
数据.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
我怎么做?
恐怕没有直接的方法可以实现这一目标。要么阅读整个表格,然后删除不需要的行,要么在表格中阅读两次并稍后分配标题:
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)
您使用的跳过不正确。试试这个:
dat <- read.table('data.txt', nrows = 2, header =TRUE, sep =';')[-1, ]
使用fread
from的解决方案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
而不是read.table()
使用readr
诸如read_csv()
管道传输到的函数dplyr::slice()
。
library(readr)
library(dplyr)
dat <- read_csv("data.txt") %>% slice(-1)
它也非常快。
您可以(在大多数情况下)sub
在结尾处;
写一个没有第二行的新文件(由于标题,这实际上是第一行),并使用read.csv
而不是read.table
> txt <- "Index;Time;
1;2345;
2;1423;
3;5123;"
> writeLines(sub(";$", "", readLines(textConnection(txt))[-2]), 'newTxt.txt')
> read.csv('newTxt.txt', sep = ";")
## Index Time
## 1 2 1423
## 2 3 5123