programing

숫자 인덱스를 기준으로 data.table의 여러 열 선택

instargram 2023. 6. 26. 21:02
반응형

숫자 인덱스를 기준으로 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), 이 답변의 이전 버전을 참조하십시오.또한 v1.9.8에 대한 뉴스, 변경 사항을 잠재적으로 중단할 수 있음, 포인트 3을 참조하십시오.

좀 장황하긴 하지만, 저는 숨겨진 것을 사용하는 것에 익숙해졌습니다..SD변수.

b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]

조금 번거롭지만 다른 데이터, 테이블 기능(내 생각에는 그렇지 않습니다)을 잃지 않기 때문에 조인 테이블 등과 같은 다른 중요한 기능을 사용할 수 있어야 합니다.

이름을 사용하여 열을 선택하려면 다음과 같이 하십시오..()에 대한 별칭입니다.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

v1.10.2 이후부터는..

dt <- data.table(a=1:2, b=2:3, c=3:4)

keep_cols = c("a", "c")

dt[, ..keep_cols]

@톰, 이 해결책을 지적해 주셔서 정말 감사합니다.그것은 저에게 아주 잘 맞습니다.

인쇄와 위의 예제에서 한 열을 제외하는 방법을 찾고 있었습니다.두 번째 열을 제외하려면 다음과 같은 작업을 수행할 수 있습니다.

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)]

언급URL : https://stackoverflow.com/questions/13383840/select-multiple-columns-in-data-table-by-their-numeric-indices

반응형