VBA를 사용하여 Excel에서이를 수행하는 것은 간단합니다. 그러나 확장 된 데이터 분석, 플로팅 기능을 위해서는 R을 사용해야합니다. 장비의 소프트웨어는 .csv 파일 만 출력하고 헤더는 포함하지 않습니다. 분석을 위해 별도로 읽어야합니다.ASCII를 사용하지 않고 머리글 (-er)을 읽는 방법, R을 사용하여 특정 행을 식별하는 방법?
내가 뭘하려고 (해야) :
- 헤더 (4 열)하지 않고 여러 .CSV을 읽어보십시오. 각 파일은 이름, 이름으로 만 구분할 수 있습니다.
- 각 파일에서 특정 행을 적게 선택하십시오. 예 : 첫 번째 열이 인 행 = 101, 열 값 = 201 등. 각 파일에는 500 행만 있습니다. 나는이 특정 행을 읽어 여기 어딘가에 루프에 대한 필요가 감지 (?)
- 스토어 값 위의 모든 파일에 대한 데이터 프레임에
- 이에 대한 몇 가지 통계를 계산
- 플롯을 합계는 결과
- 최종 출력 데이터 프레임 통계 분석 엑셀로 플롯은, 이미, 데이터 프레임에 R, 저장소를 사용 .CSV 판독 데이터 프레임 항목 및 플롯 분석을 수행하는 방법을 시도
을 .csv로. 이 프로세스 흐름은 각 장비 실행마다 매일 반복됩니다. 두 가지 도구를 실행합니다. 매번 실행할 수있는 코드 스 니펫을 저장하려고합니다.
내가 직면 한 유일한 문제는 특정 행을 찾는 방법을 잘 모르겠습니다. 다음 문제는 Excel로 출력하는 방법입니다.
.CSV 입력 파일 형식 :
V1, V2, V3, V4
numeric (0 decimals), numeric (with 4 decimals), alpha num, alpha num
001, 12.8975, XY03, XY05
...
485, 89.2134, XY02, XY7
업데이트 1 : 인해 악기 자상 일부 변경, 대신 CSV의 files are in ASCII format합니다. 이것은 많은 한계를 가져옵니다. ASCII를 지원하기 위해 raster
패키지를 설치하는 문제. 대신 다음을 사용하십시오. sql을 지원하기 위해 sqldf
패키지를 설치했습니다. 그러나 이는 오류를 발생시킵니다.
> fl1 <- read.table("~/rcodes/dt07042017/fileone.ASC", sep=",")
--read ok
> sv1 <- sqldf('select FNAME "F1", V2, V3, V4 from fl1 where V1 in (101, 201, 301)')
Warning message: Quoted identifiers should have class SQL, use DBI::SQL()
if the caller performs the quoting.
설치 한 DBI 패키지. 그것이 무엇을 확신하지 못합니다. SQL이 작동했습니다. 이 파일은 단지 하나의 파일이며 1000 개의 파일을 읽고 특정 행 값을 선택하여 하나의 테이블/df에 저장해야합니다. 다음과 같은 점선을 썼습니다. 파일 이름을 삽입 할 수있는 방법을 찾지 못해 실패합니다. 나는 R.에서 SQL을 사용하지 매우 행복하고
> df <- NULL
> fn <- NULL
> n <- 1
> for (f in files) {
+ fn <- file_path_sans_ext(f)
+ df0 <-read.table(f, sep=",")
+ n <- n + 1
+ df <- sqldf('select n, fn, V1, V2 from df0
where V1 IN (101, 201, 301, 401)')
-- thought R could read fn just as df0
+ df <- rbind(df) --further fn and n only reads two files
+ }
Error in rsqlite_send_query([email protected], statement) :
no such column: n, df1
SQL 패키지를 사용하여 위의 완수하지 않고이 작업을 수행하는 R의 다른 방법이 있습니까?
UPDATE 대신 해당 열에 2시 20분 값 (18 값)을 받고 3
, 내가 그렇게 할 수있는 방법 (20)에 2 행의 평균을 얻고 싶은 ?
#set working directly to the folder where csv files are located
files <- list.files(pattern='.csv')
m = data.frame()
for (k in 1:length(files)){
+ csv = read.csv(files[k], header = FALSE)
#picking up 2:20 consecutive values, value for row 50,120,150 so on
+ data = csv[c(2:20, 50, 120, 150, 175, 200), c(1,2)]
#-pivot transform col/row- data <- as.data.frame(t(data))
#but that line screwed up the data
#when those selected values are with NA/blanks
data$file = files[k]
+ m = rbind(m, data)
}
csv 파일의 예를 제공해주세요. Excel에서 결과를 내보내는 데 사용할 수있는 패키지는 매우 많습니다.'WriteXLS','xlsx'는 그 중 일부입니다. – nicola
파일의 크기는 얼마입니까? 그리 많지 않다면 모든 것을 읽은 다음 나중에 부분 집합을 읽을 수 있습니다. 첫 x 째 컬럼이 201 인 행만 선택하려면'x <-read.csv (yourfile); x <-x [x [[1]] == 201,]'와 같이하십시오. – nicola
새 컬럼을 추가 할 수 있습니까? R로 읽을 때 각 파일 데이터를 식별 할 수 있습니까? 데이터 요소는 신원 정보를 필요로합니다. 나는 다음 반나 동안 떨어져있을 것이다. 나는 내가 작성한 업데이트를 게시 할 것이다. 그런 다음 댓글을 쓸 수 있다면 좋을 것입니다. – bonCodigo