簡體   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