data.table에 대한 설명을 듣고 자 노력하고 있지만 의견을 물어보고 싶습니다.R : data.table에서 열의 범위 선택
(1) 새로운 data.table을 생성하기 위해 data.table에서 다양한 범위의 열을 선택하고 싶습니다.
(2) 또한 각 그룹의 첫 번째 값을 가져오고 싶습니다. 첫 번째 질문에 관해서는 대답이 here으로 주어진다 고 생각합니다. 그런 다음 열 번호와 관련이 있습니다. 그러나 필자는 data.table의 주요 장점 (및 판매 포인트) 중 하나라고 생각하는 열 이름을 사용하고 싶습니다.
다음은 데이터 세트의 예입니다.
DT <- data.table(ID=c(101,101,101,102,103,104,104),
"year.1" = c(1,5,3,2,3,4,8),
"year.2" = c(4,5,6,NA,1,2,3),
"year.3" = c(1,2,3,7,9,8,0),
"year.4" = c(4,5,NA,1,2,6,9))
setkey(DT,ID)
실제로 나는 "연도"뿐만 아니라 훨씬 더 많은 열을 가지고 있습니다. 두 번째 질문에 대한
# ALL OF THESE DONT WORK AND END IN ERRORS
# To extract a range of columns I have tried this:
dt.sub <- DT[,list(year.1:year.3,ID)]
dt.sub <- DT[,c("year.1":"year.3",ID), with=FALSE] # I know shouldn't work since
# "with=FALSE" is only intended in combination with := according to the documentation
dt.sub <- DT[,lapply(SD),.SDcols= for (i in 1:3) paste0("year.",i) ]
: 나는 각 그룹의 첫 번째 관찰을 포함 dt.sub 싶다면, 본인은 "멀티 포트"인수를 사용할 수 있다고 기대. 그러나 이것은 내가 예상하는 것보다 다른 방식으로 에서 작동합니다. 단 하나의 열에 예제를 사용하면 :
dt.sub1 <- DT[,year.1, by=ID,mult="first",]
이것은 오류를 제공하지 않지만 그룹의 첫 번째 줄만 제공하는 것은 아닙니다.
dt.sub1 <- unique(DT[,year.1, by=ID])
가 예상되는 출력을 제공 않습니다,하지만 난 mult
옵션 중요한 뭔가를 놓친 거지 같은 느낌 : 나는 해결 방법 같은 것을 알고있다. 병합/이 data.tables에 가입하고 일치하는 항목이 여러 개 존재할 때 무엇을 의미 할 때
안녕 아룬, 그것은 명확하게 만드는, 편집 주셔서 감사합니다! – Richard
'v1.9.5' 이래로'dt.sub-DT [, c ("year.1": "year.3", ID), = FALSE]'로 작동합니다. [here] (https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.html)를 참조하십시오. –