繁体   English   中英

在R中,使用data.table包,如何使用特殊变量(带空格)做一个子集

[英]in R, using data.table package, how to do a subset with special variable(with space)

我正在读取带有 data.table 包的 txt 文件。

df<- fread("df.txt")
head(df)
Number Region Type Car ...
     1       1       1
     2       1       2
     3       1       1  
     4       1       1
     5       2       2
     6       2       3

我想做一个 df 的子集,Type Car 等于 1 和 3。当我写这样的东西时

>class(df)
"data.table" "data.frame"
>subset(df, Type Car %in% c(1,3))

这不起作用。 一些解决方案?

您已经从fread()获得了一个数据表(除非您使用了data.table = FALSE ),因此您可以使用数据表行子集而不是subset() 由于您有一个多字列名,您需要在它周围应用反引号。

df[`Type Car` %in% c(1, 3)]

如果您选择使用subset() ,同样如此。 事实上,在引用包含空格的多词名称时,反引号总是必要的。 最好使用限定的 R 名称。 您可以使用以下方法重置名称

setnames(df, make.names(names(df), unique = TRUE))

所以你可以避免反引号。 那么你可以做

df[Type.Car %in% c(1, 3)]

注意:data.table版本 1.9.6 中,您现在可以使用col.names参数命名fread()的列。 正如 Michael Chirico 所提到的,最好立即解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM