2
FFDF를 날짜별로 부분 집합하려고합니다. 아래에서는 정상적인 데이터 프레임을 사용하여 이러한 하위 집합을 만들었습니다. 그러나 이것을 FFDF에 적용하는 데 도움이 필요했습니다. 내 시도는 오류 메시지와 함께 코드 주석에 나열됩니다. 많은 분들께 미리 감사드립니다!R로 큰 데이터 프레임 (ffdf)을 날짜별로 부분 집합하는 방법은 무엇입니까?
#Create a normal data frame (in production this is read directly into an ffdf
#through a csv file)
start <- c("01/01/2010", "01/01/2011", "01/01/2012", "01/01/2012", "01/01/2012")
end <- c("31/12/2010", "31/12/2011", "31/12/2012", "31/12/2012", "31/12/2012")
amount <- c(10,20,30,40,50)
df <- data.frame(start,end,amount)
#Ensure subsetting works on a normal data frame
#convert type to proper date (this has to be done in production after csv file
#has been read in)
df$start <- as.Date(df$start, format="%d/%m/%Y")
df$end <- as.Date(df$end, format="%d/%m/%Y")
#Subset
df <- subset(df, start == as.Date("2012-01-01",format="%Y-%m-%d"))
#Works :) Now let's try with ffdf
ffdf <- as.ffdf(df)
#Type conversion for dates (again, applied in production after mammoth csv has
#been read in)
ffdf$start <- as.Date(ffdf$start, format="%m/%d/%Y")
ffdf$end <- as.Date(ffdf$end, format="%m/%d/%Y")
#Subset
ffdf <- subset.ff(ffdf, start==as.Date("2012-01-01",format="%Y-%m-%d"))
#ERROR: Error in ffdf(x = x) : ffdf components must be atomic ff objects
고맙습니다. 난 그냥 코드를 실행하려고했지만 다음과 같은 오류가 반환 : UseMethod ("as.hi")의 오류 : 'as.hi'의 적용 가능한 메서드는 "NULL"클래스의 개체에 적용됩니다. 나는 간단한 코드 조각을 고치는 방법을 놓치고있다. 그래도 정말 유망 해 보입니다. 다시 감사합니다. –
예를 들어 주셔서 감사합니다. subset.ffdf에 작은 문제가 있음을 확인했습니다.이 문제는 현재 ffbase 개발 버전에서 수정되었습니다. 라이브러리 (devtools)를 통해 설치할 수 있습니다. install_github ("ffbase", "edwindj", subdir = "pkg"); 이렇게하면 문제가 해결됩니다. – jwijffels
감사합니다. 그 수정이 효과가있다. 위에 설명 된대로 Github에서 ffbase 패키지의 고정 버전을 설치해야했습니다. devtools는 R의 이전 버전에서 사용할 수 없기 때문에 R의 최신 버전을 최신 버전으로 업그레이드해야했습니다. 또한 devtools에는 자동으로 설치되지 않은 libcurl에 대한 의존성이 있으므로 devtools도 함께 설치해야했습니다. 명령 "sudo apt-get install libcurl4-openssl-dev"를 메인 우분투 터미널 (R 콘솔이 아님)에 설치하십시오. –