0
install.packages('data.table')
library(data.table)
data <- read.csv("http://www.ats.ucla.edu/stat/data/hsb2_small.csv")
head(data, 10)
> id female race ses schtyp prog read write math science socst
> 1: 70 0 4 1 1 1 57 52 41 47 57
> 2: 121 1 4 2 1 3 68 59 53 63 61
> 3: 86 0 4 3 1 1 44 33 54 58 31
> 4: 141 0 4 3 1 3 63 44 47 53 56
> 5: 172 0 4 2 1 2 47 52 57 53 61
> 6: 113 0 4 2 1 2 44 52 51 63 61
> 7: 50 0 3 2 1 1 50 59 42 53 61
> 8: 11 0 1 2 1 2 34 46 45 39 36
> 9: 84 0 4 2 1 1 63 57 54 58 51
> 10: 48 0 3 2 1 2 57 55 52 50 51
,我們看到它是一個子組列索引中的R - Data.Table對比數據框
class(data)
> [1] "data.frame"
,所以我們可以嵌入特定列 (只顯示10行這個頁面的例子.. 。)
data[ , c(1, 7, 8)]
> id read write
> 1 70 57 52
> 2 121 68 59
> 3 86 44 33
> 4 141 63 44
> 5 172 47 52
> 6 113 44 52
> 7 50 50 59
> 8 11 34 46
> 9 84 63 57
> 10 48 57 55
或一個範圍(有益的,如果你有很多的變量)
data[ , 3:11]
> race ses schtyp prog read write math science socst
> 1 4 1 1 1 57 52 41 47 57
> 2 4 2 1 3 68 59 53 63 61
> 3 4 3 1 1 44 33 54 58 31
> 4 4 3 1 3 63 44 47 53 56
> 5 4 2 1 2 47 52 57 53 61
> 6 4 2 1 2 44 52 51 63 61
> 7 3 2 1 1 50 59 42 53 61
> 8 1 2 1 2 34 46 45 39 36
> 9 4 2 1 1 63 57 54 58 51
> 10 3 2 1 2 57 55 52 50 51
一切正常,直到我開始使用data.table。
setDT(data)
class(data)
> [1] "data.table" "data.frame"
我如何完成與data.table類似的子集? 相同的代碼上面的產量......
data[ , c(1, 7, 8)]
> [1] 1 7 8
data[ , 3:11]
> [1] 3 4 5 6 7 8 9 10 11
我知道dplyr選擇的(),但我追求的,不涉及鍵入列名的解決方案,並且將不勝感激一個明確的方法子集劃分一data.table通過使用「列號」。我偶爾使用了subset(),甚至爲了在數據[I,J,by = K]中使用而構造字符向量J。我肯定錯過了什麼。代碼大師會考慮這個微不足道的,並容易顯示一個靈活的解決方案,允許一個,例如,選擇列1,3,5,10到30和97.
在那裏添加'with = FALSE'。 – A5C1D2H2I1M1N2O1R2T1