[英]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.