read.csv()
data <- read.csv('/home/koreanraichu/Others/csv/Drug.csv')
불러오는 거 성공은 했는데, 터미널에서 열었음(...)+SMILES 길이때문에 개 방대함으로 인해 결과 갭처 불가... 실화다.
> data=read.csv("http://www.cookbook-r.com/Data_input_and_output/Loading_data_from_a_file/datafile.csv")
> data
First Last Sex Number
1 Currer Bell F 2
2 Dr. Seuss M 49
3 Student <NA> 21
웹에서 가져오는 것도 된다.
read.table()
data <- read.table('/home/koreanraichu/Others/csv/Drug.csv',header=FALSE,sep=",")
헤더에 false를 줬더니 헤더가 가출한 상태로 온다. sep=","은 파이썬에도 비슷한 게 있음. (구분자 가르쳐주는 거)
> data=read.table("http://www.cookbook-r.com/Data_input_and_output/Loading_data_from_a_file/datafile.csv",strip.white=TRUE)
> data
V1 V2
1 First ,"Last","Sex","Number"
2 Currer ,"Bell","F",2
3 Dr. ,"Seuss","M",49
4 ,"Student",NA,21
read.table()에 strip.white=TRUE를 주면...... 내가 뭘 잘못했길래 표가 이렇게 개판 오분전이 된 걸까...
file.choose()
> data<-read.csv(file.choose())
Enter file name: /home/koreanraichu/Others/csv/Drug.csv
쿡북에는 Dialog 어쩌고 하던데 여는 리눅스+터미널크리로 직접 경로를 써야 한다. (아예 쓰라고 뜬다)
stringsAsFactor
솔직히 팩터가 뭔지는 모름.
data <- read.csv('/home/koreanraichu/Others/csv/Drug.csv',stringsAsFactors=FALSE)
이렇게 가져오면 된다. strongsAsFactors는 옵션 이름)
> data <- read.csv('/home/koreanraichu/Others/csv/Drug.csv',stringsAsFactors=FALSE)
> str(data$CID)
int [1:17] 2244 1983 3672 6518 441300 71226662 6852395 65030 6918638 14982 ...
> str(data$SMILES)
chr [1:17] "CC(=O)OC1=CC=CC=C1C(=O)O" "CC(=O)NC1=CC=C(C=C1)O" ...
> data <- read.csv('/home/koreanraichu/Others/csv/Drug.csv',stringsAsFactors=TRUE)
> str(data$CID)
int [1:17] 2244 1983 3672 6518 441300 71226662 6852395 65030 6918638 14982 ...
> str(data$SMILES)
Factor w/ 17 levels "C(C(CO[N+](=O)[O-])(CO[N+](=O)[O-])CO[N+](=O)[O-])O[N+](=O)[O-]",..: 8 6 9 1 5 10 7 16 3 11 ...
위는 해당 옵션이 False일 때, 아래는 True일 때. 잘 보면 SMILES가 각각 chr와 factor로 다르다.
헐 근데 저 이거 안 주고 불러왔는데 망한듯... 아니 다시 불러오기 귀찮은데... 어쩌죠... 어 그럼
> data$SMILES = as.character(data$SMILES)
> str(data$SMILES)
chr [1:17] "CC(=O)OC1=CC=CC=C1C(=O)O" "CC(=O)NC1=CC=C(C=C1)O" ...
단식이면 이거 주고
> stringcols=c("Name","Molecular.Weight")
> data[stringcols]=lapply(data[stringcols],as.character)
뭉텅이면 이거 주면 된다. ($는 pandas에서 ['컬럼']과 같은 기능을 한다)
엑셀과 SPSS
엑셀... 나 여기 xls가 없음...
read.xls()
아무튼 이걸로 읽는다.
library(foreign)
read.spss()
SPSS 파일은 foreign이라는 라이브러리를 불러온 상태에서 읽어야 한다.
표 만드는건 왜 되는거지
> data=read.table('clipboard',header=TRUE)
경고메시지(들):
In read.table("clipboard", header = TRUE) :
'clipboard'에서 readTableHeader에 의하여 발견된 완성되지 않은 마지막 라인입니다
> data
size weight cost
1 small 5 6
2 medium 8 10
3 large 11 9
클립보드에 있는 걸 불러오거나(물론 복사는 해야 한다)
> data2=read.table(stdin(),header=TRUE)
0: 1 2 3 4
1: 0 0 0 0
2: 0 0 0 0
3: 0 0 0 0
4:
> data2
X1 X2 X3 X4
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
입력하거나...
> print(data2,row.names=FALSE)
X1 X2 X3 X4
0 0 0 0
0 0 0 0
0 0 0 0
행 이름 떼고 볼 수도 있다.
> write.csv(data,stdout(),row.names=FALSE)
"size","weight","cost"
"small",5,6
"medium",8,10
"large",11,9
내 마음 속... 아니고... 하드... 아니고... 클립보드에 저(별)장 하고싶으면 이거 쓰자. 파일이요? 그건 이따 나와요.
source()
R 스크립트를 불러올 때 쓰는데 내 컴퓨터에 R 스크립트가 없다.
setwd('/home/username/desktop/rcode') # 소스가 있는 디렉토리로 가서
source('analyze.r') # 실행한다
그렇다고 합니다.
write.csv()
> setwd('/home/koreanraichu')
> write.csv(data,"data.csv")
저거 안 해두면 대체 파일이 죄다 어디로 가는거냐... (setwd()는 work directory를 설정할 때 쓴다)
아무튼 저장된 거 맞다.
옵션으로 row.names=FALSE를 주면 행 이름이 빠지고, na=""를 주면 결측값을 공백으로 때운다. 잠깐 이거 다른걸로도 때울 수 있나?
> write.table(data, "data.csv", sep="\t", row.names=FALSE, col.names=FALSE)
구분자도 지정 가능하다. (해당 코드에서는 탭으로 지정했고 저게 다 적용돼서 행렬 이름이 다 빠진다)
dump()
dump("data","data.Rdmpd") # 하나
dump(c("data","data2"),"data1.Rdmpd") # 뭉텅이
dump()를 이용해 Rdmpd로 저장한 결과.
saveRDS()
saveRDS("data","data.rds")
# ascii=TRUE 옵션을 주면 아스키 포맷이 된다
saveRDS()를 이용해 RDS format으로 저장한 결과. 참고로 저거 압축 관리자 소환된다. (그리고 압축 풀다가 에러났다)
save()
save(data,file="data.RData")
(추천 브금: 영탁-니가 왜 거기서 나와) R스튜디오: 불러놓고 뭔소리여
> save(data,file="data.RData",ascii=TRUE)
Ascii 포맷으로 저장할거면 이거 쓰면 되고
save(data, data1, file="data.RData")
여러 개 한꺼번에 쓸 거면 이거 쓰면 된다.
sink()
> sink('analysis-output.text')
> set.seed(1)
> x=rnorm(10,10,1)
> y=rnorm(10,11,1)
> cat(sprintf("x has %d elements:\n",length(x)))
> print(x)
> cat("y=",y,"\n")
> cat("----------\n")
> cat("T-test between x and y\n")
> cat("----------\n")
> t.test(x,y)
> sink()
# 여기까지가 일차적인 기록이다.
> sink('analysis-output.text',append=TRUE)
> cat("some more stuff here?")
> sink()
# append(내용 추가)한다는 모양.
오 쩐다 피보나치 수열도 저장 되나?
'Coding > R' 카테고리의 다른 글
R 배워보기- 6.2. Manipulating data-Factors (0) | 2022.08.20 |
---|---|
R 배워보기- 6.1. Manipulating data-General (0) | 2022.08.20 |
번외편-R로 미적분 하기 (0) | 2022.08.20 |
R 배워보기-4. 공식 (0) | 2022.08.20 |
R 배워보기-3. 문자열 (0) | 2022.08.20 |