假设我有一个包含数十或数百列的CSV,我想提取大约2或3列.我知道这里colClasses描述的解决方案,但代码变得非常难以理解.
我想是usecols从熊猫read_csv.
加载所有内容并在之后选择不是一个解决方案(文件超大,它不适合内存).
一种方法是使用包sqldf.如果您了解SQL,则可以读取大型文件,仅过滤所需的部分.
我将使用内置数据集iris使示例可重现,首先将其保存到磁盘.
write.csv(iris, "iris.csv", row.names = FALSE)
Run Code Online (Sandbox Code Playgroud)
现在问题.
参数row.names就像在write.csv指令中一样.
注意周围的反引号Sepal.Length.这是由于列名中的点字符.
library(sqldf)
sql <- "select `Sepal.Length`, Species from file"
sub_iris <- read.csv.sql("iris.csv", sql = sql, row.names = FALSE)
head(sub_iris)
# Sepal.Length Species
#1 5.1 "setosa"
#2 4.9 "setosa"
#3 4.7 "setosa"
#4 4.6 "setosa"
#5 5.0 "setosa"
#6 5.4 "setosa"
Run Code Online (Sandbox Code Playgroud)
最后清理.
unlink("iris.csv")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |