gpt4 book ai didi

r - R 中按列索引子集 - Data.Table 与 dataframe

转载 作者:行者123 更新时间:2023-12-02 04:14:15 24 4
gpt4 key购买 nike

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

我们看到它是一个

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 select() 但我寻求一种不涉及输入列名的解决方案,并且非常感谢使用“列号”来对 data.table 进行子集化的清晰方法。我偶尔会使用subset(),甚至构建用于数据[I, J, by = K]的字符向量J。我肯定错过了什么。代码大师会认为这是微不足道的,并且可以轻松地显示一个灵活的解决方案,例如允许选择第 1、3、5、10 到 30 和 97 列。

最佳答案

对于 data.table,您需要在列子集语句中包含 with=FALSE。

data[, 3:11, with=FALSE]

关于r - R 中按列索引子集 - Data.Table 与 dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com