如何使用data.table
中的數字索引(位置)向量來選擇多列?通過數字索引在data.table中選擇多個列
這就是我們將如何與data.frame
做:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
如何使用data.table
中的數字索引(位置)向量來選擇多列?通過數字索引在data.table中選擇多個列
這就是我們將如何與data.frame
做:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
對於data.table>= 1.9.8
的版本,下面的一切都只是工作:
library(data.table)
dt <- data.table(a = 1, b = 2, c = 3)
# select single column by index
dt[, 2]
# b
# 1: 2
# select multiple columns by index
dt[, 2:3]
# b c
# 1: 2 3
# select single column by name
dt[, "a"]
# a
# 1: 1
# select multiple columns by name
dt[, c("a", "b")]
# a b
# 1: 1 2
對於版本data.table< 1.9.8
(需要數字列選擇使用with = FALSE
),請參閱this previous version這個答案。另請參閱NEWS,v1.9.8中的變化/潛在的變化變化/點2.
這有點冗長,但我已經習慣了使用隱藏的.SD
變量。
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
這是一個有點麻煩,但你不要失去了其他data.table功能(我不認爲),所以你仍然應該能夠使用像連接表等其他重要功能。
以編程方式創建列列表時不麻煩並且非常有用 – Chris
如果你想使用列名選擇列,只需使用.()
,這是list()
別名:
library(data.table)
dt <- data.table(a = 1:2, b = 2:3, c = 3:4)
dt[ , .(b, c)] # select the columns b and c
# Result:
# b c
# 1: 2 3
# 2: 3 4
@湯姆,非常感謝您指出這個解決方案。 它對我很好。
我正在尋找一種方法,只是從打印和上面的示例中排除一列。要排除第二列,你可以做這樣的事情
library(data.table)
dt <- data.table(a=1:2, b=2:3, c=3:4)
dt[,.SD,.SDcols=-2]
dt[,.SD,.SDcols=c(1,3)]
你也可以考慮dplyr包。它允許使用更簡單的結構來處理數據幀。一個例子將是使用選擇指令I可以按名稱僅搶在數據幀中,我想
選擇(。數據,VAR1,var7,var12)變量
問題出在數據表而不是數據框上。 – jamborta
dplyr軟件包也適用於數據表格(我必須查看這些數據,因此在發佈之前我不對此表示歉意)。 – Puddlebunk
從V1。 10.2以後,你也可以用..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
沒問題。比較'dt [,'a「]'和'dt [,」a「,with = FALSE]'來看看它真的是一個有用的選項。 –
有沒有辦法做到這一點?例如'DT [,list(b:c)',因爲我發現在數據表中直接轉換列是很方便的,例如我可以做'DT [,list(1/b,2 * c)]'但這不適用於。 – jamborta
您可以使用.SDcols = 2:3或名稱的字符向量。不確定你的意思是關於如何不與 – mnel