当前位置:  开发笔记 > 编程语言 > 正文

用fread()读取后无法对数据帧进行子集化

如何解决《用fread()读取后无法对数据帧进行子集化》经验,为你挑选了2个好方法。

我正在尝试对名为的表进行子集化cars,如下所示.我不希望Country我的子表中的列,所以我曾经[,-1]删除第一列,但它将我的新变量分配cars.use-1.这里发生了什么?

> library(data.table)
> cars <- fread('cars.csv', header = TRUE)
> typeof(cars)
[1] "list"
> head(cars)
Country                       Car  MPG Weight Drive_Ratio Horsepower Displacement Cylinders
1:    U.S.        Buick Estate Wagon 16.9  4.360        2.73        155          350         8
2:    U.S. Ford Country Squire Wagon 15.5  4.054        2.26        142          351         8
3:    U.S.        Chevy Malibu Wagon 19.2  3.605        2.56        125          267         8
4:    U.S.    Chrysler LeBaron Wagon 18.5  3.940        2.45        150          360         8
5:    U.S.                  Chevette 30.0  2.155        3.70         68           98         4
6:   Japan             Toyota Corona 27.5  2.560        3.05         95          134         4
> cars.use <- cars[,-1]
> cars.use
[1] -1

akrun.. 7

通过使用fread,我们得到了一个data.table.要集,一个data.table, with=FALSE都可以使用.

cars[,-1, with=FALSE]

它描述于 ?data.table

默认情况下,= TRUE,j在x的帧内计算; 列名可以用作变量.当with = FALSE时,j是列名的字符向量或要选择的列位置的数字向量,返回的值始终是data.table.with = FALSE在data.table中通常很有用,可以动态选择列.

数据

 cars <- data.table(Col1= 1:5, Col2= 6:10)


Rich Scriven.. 6

您可以在通话中解决此问题fread().

如果您将fread()呼叫更改为按名称(或按编号)删除第一列,则读取时将跳过该列.

fread("cars.csv", drop = "Country", header = TRUE)

您在子集化方面遇到问题的原因是因为默认情况下fread()返回数据.如果需要数据,请将data.table参数更改为FALSE.

cars <- fread("cars.csv", header = TRUE, data.table = FALSE)

现在我们有了一个数据框,cars[,-1]您使用的代码将起作用.如果要删除列并返回数据框,请将这两者结合起来.

fread("cars.csv", drop = "Country", header = TRUE, data.table = FALSE)

有关help(fread)详细信息,请参阅



1> akrun..:

通过使用fread,我们得到了一个data.table.要集,一个data.table, with=FALSE都可以使用.

cars[,-1, with=FALSE]

它描述于 ?data.table

默认情况下,= TRUE,j在x的帧内计算; 列名可以用作变量.当with = FALSE时,j是列名的字符向量或要选择的列位置的数字向量,返回的值始终是data.table.with = FALSE在data.table中通常很有用,可以动态选择列.

数据

 cars <- data.table(Col1= 1:5, Col2= 6:10)



2> Rich Scriven..:

您可以在通话中解决此问题fread().

如果您将fread()呼叫更改为按名称(或按编号)删除第一列,则读取时将跳过该列.

fread("cars.csv", drop = "Country", header = TRUE)

您在子集化方面遇到问题的原因是因为默认情况下fread()返回数据.如果需要数据,请将data.table参数更改为FALSE.

cars <- fread("cars.csv", header = TRUE, data.table = FALSE)

现在我们有了一个数据框,cars[,-1]您使用的代码将起作用.如果要删除列并返回数据框,请将这两者结合起来.

fread("cars.csv", drop = "Country", header = TRUE, data.table = FALSE)

有关help(fread)详细信息,请参阅

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有