이름이 다른 다른 csv 파일이 있습니다. 몇 가지 계산을하고 그 결과를 하나의 csv 파일에 저장하고 싶습니다.
두 개의 csv 파일에 대한 내 데이터의 형식은 다음과 같습니다.
파일 1 :
day price
2000-12-01 00:00:00 2
2000-12-01 06:00:00 3
2000-12-01 12:00:00 NA
2000-12-01 18:00:00 3
파일 2 :
day price
2000-12-01 00:00:00 12
2000-12-01 06:00:00 NA
2000-12-01 12:00:00 14
2000-12-01 18:00:00 13
파일을 읽으려면 다음을 사용합니다.
file1 <- read.csv(path_for_file1, header=TRUE, sep=",")
file2 <- read.csv(path_for_file2, header=TRUE, sep=",")
계산 프로세스의 예 :
library(xts)
file1 <- na.locf(file1)
file2 <- na.locf(file2)
그리고 결과를 csv 파일에 대해 타임 스탬프가 동일한 csv에 저장합니다.
merg <- merge(x = file1, y = file2, by = "day", all = TRUE)
write.csv(merge,file='path.csv', row.names=FALSE)
여러 파일을 읽으려면 이것을 시도 했습니다 . 2 파일의 프로세스를 n 파일로 만드는 방법에 대한 아이디어가 있습니까?
데이터가 쉼표로 구분되었다고 말하지만 공백으로 구분하여 표시합니다. 나는 당신의 데이터가 진정으로 쉼표로 구분된다고 가정 할 것입니다.
개별 개체로 읽는 것보다 목록으로 읽는 것이 더 쉽습니다. xts / zoo 객체 를 사용하면 시계열 병합이 훨씬 더 쉽기 때문에 read.zoo
대신 사용하기도 더 쉽습니다 read.csv
.
# get list of all files (change pattern to match your actual filenames)
files <- list.files(pattern="file.*csv")
# loop over each file name and read data into an xts object
xtsList <- lapply(files, function(f) {
d <- as.xts(read.zoo(f, sep=",", header=TRUE, FUN=as.POSIXct))
d <- align.time(d, 15*60)
ep <- endpoints(d, "minutes", 15)
period.apply(d, ep, mean)
})
# set the list names to the file names
names(xtsList) <- files
# merge all the file data into one object, filling in NA with na.locf
x <- do.call(merge, c(xtsList, fill=na.locf))
# write out merged data
write.zoo(x, "path.csv", sep=",")
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다