내 데이터 테이블은 다음과 같습니다.
head(data)
Date AI AGI ADI ASI ARI ERI NVRI SRI FRI IRI
1: 1991-09-06 NA 2094.19 NA NA NA NA NA NA NA NA
2: 1991-09-13 NA 2204.94 NA NA NA NA NA NA NA NA
3: 1991-09-20 NA 2339.10 NA NA NA NA NA NA NA NA
4: 1991-09-27 NA 2387.81 NA NA NA NA NA NA NA NA
5: 1991-10-04 NA 2459.94 NA NA NA NA NA NA NA NA
6: 1991-10-11 NA 2571.07 NA NA NA NA NA NA NA NA
NA에 대해 걱정하지 마십시오. 내가 원하는 것은 날짜를 제외한 각 열에 대해 "% 변경"열을 만드는 것입니다.
지금까지 내가 한 것은 :
names_no_date <- unique(names(data))[!unique(names(data)) %in% "Date"]
for (i in names_no_date){
data_ch <- data[, paste0(i, "ch") := i/shift(i, n = 1, type = "lag")-1]}
오류가 발생합니다.
Error in i/shift(i, n = 1, type = "lag") :
non-numeric argument to binary operator
이 오류를 어떻게 해결할 수 있는지 궁금합니다.
i
문자열이므로 문자열을 다음과 같이 나누려고합니다 i/shift(i, n = 1, type = "lag")
.
> "AI"/NA
Error in "AI"/NA : non-numeric argument to binary operator
대신
for (i in names_no_date){
data[, paste0(i, "ch") := get(i)/shift(get(i), n = 1, type = "lag")-1]
}
또한 변수에 저장된 이름으로 data.table 열 참조를 참조하십시오 .
편집 : @Frank는 OP의 출력을 생성하는 더 간결한 방법이 주석에 씁니다.
data[, paste0(names_no_date, "_pch") := .SD/shift(.SD) - 1, .SDcols=names_no_date]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다