6. 데이터 변환
이 장에서는 Apply, lapply, sapply, tapply, mapply 및 자매 기능인 by 및 분할과 같은 적용 시리즈 기능을 주로 설명합니다. 루프 없이 데이터를 일괄 처리하는 데 적합합니다.
6.1 벡터 그룹화
요인(그룹화 요인)을 사용하여 다양한 요소 그룹을 식별합니다.
> 그룹 <—split(x, f) //x<—c(40,29,39),f<—factor(c(“A”,”B”,”A”))
벡터 목록을 반환합니다. 목록의 각 벡터에는 동일한 그룹에 속하는 요소가 포함되어 있습니다.
> 그룹 <—unstack(data.frame(x,f)) //벡터 목록에서 변환된 데이터 프레임을 반환합니다.
6.2 목록의 각 요소에 함수 적용하기
> lst <—lapply(lst, function) //목록 형식으로 반환
> vec <—sapply(lst, function) //가능한 경우 벡터 형식을 반환합니다.
6.3 행렬의 각 행에 함수 적용
> 결과 <—apply(mat, 1, function) //mat는 행렬이고 1은 행 단위를 의미합니다.
반환 결과는 벡터입니다.
6.4 행렬이나 데이터 프레임의 각 열에 함수 적용
> 결과 <—apply(mat, 2, function) //mat는 행렬, 2는 열 단위를 의미합니다.
> lst <—lapply(dfrm, function) //dfrm은 데이터 프레임이며 열 단위로 작동합니다.
> vec <—sapply(dfrm, 함수)
데이터 프레임의 요소가 동종인 경우 적용을 사용할 수도 있습니다.
6.5 그룹 데이터에 함수 적용하기
> tapply(x,f, function) //각 데이터 세트에 함수를 적용합니다.
6.6 행 그룹에 함수 적용
> by(dfrm, Fact, function) //fact 팩터는 dfrm의 각 행의 카테고리를 식별합니다. 함수의 매개변수는 데이터 프레임이어야 합니다. By는 해당 행을 임시 데이터 프레임에 넣은 후 함수를 호출합니다.
6.7 병렬 벡터 또는 리스트에 함수 적용하기
> mapply(gcd,c(1,2,3), c(9,6,3)) //각각 (1,9)(2,6)(3,3)의 최대 공약수를 찾습니다.
gcd는 두 숫자의 최대 공약수를 찾는 것이며 매개변수는 벡터화되지 않은 스칼라입니다.
7. 문자열과 날짜
날짜 및 시간 클래스: Date, POSIXct, POSIXlt, chron, lubridate, mondate, timeDate
7.1 문자열 길이 구하기
> nchar("Moe") //결과는 3입니다.
>length("Moe") //결과는 1이며, 필요한 문자열 길이는 아닙니다.
7.2 연결 문자열
> 붙여넣기(“모두”,“사랑합니다”, “통계”)
> Paste("Everybody", "loves", "stats.", sep="-") //연결의 중간 간격은 "-"입니다.
> Paste(vec, "loves", "stats.") // vec의 각 요소는 다음 문자열에 연결됩니다.
> Paste(vec,“loves”, “stats.”,collapse=”,and ”) //상단 구분 기호
7.3 부분 문자열 추출
> substr("Statistics",1, 4) //첫 번째 요소부터 시작하여 네 번째 요소로 끝나는 하위 문자열을 추출합니다.
> 도시<— c(“뉴욕, 뉴욕”, “로스앤젤레스, 캘리포니아”, “피오리아, 일리노이”)
>substr(cities, nchar(cities)-1, nchar(cities)) //결과는 "NY" "CA" "IL"입니다.
7.4 구분 기호를 기준으로 문자열 분할
> strsplit(string,delimiter) //구분자는 단순한 문자열 또는 정규식입니다.
7.5 교체용 스트링
> sub(old,new, string) //첫 번째 하위 문자열 교체
> gsub(old,new, string) //모든 하위 문자열 교체
7.6 문자열의 특수 문자 보기
cat으로 출력할 수 없다면 print를 사용하세요.
7.7 모든 쌍별 문자열 조합 생성(데카르트 곱)
> m <—outer(string1, string2, Paste, sep=”-”) //sep은 커넥터입니다.
7.8 현재 날짜 얻기
> 시스템.날짜()
7.9 문자열을 날짜로 변환
> as.날짜(“2014-10-23”)
>as.Date(“2014/10/23”, format=”%m/%d/%y”) //Date 형식이 확실하지 않을 때의 방법
7.10 날짜를 문자열로 변환
> 형식(시스템.날짜())
>as.character(Sys.Date()) //기본 형식에 따름
> format(Sys.Date(),format="%m/%d/%Y") //출력 문자열 형식을 지정합니다. "/" 및 "Y"에 주의하세요.
7.11 연도, 월, 일을 날짜로 변환
> ISOdate(년,월,일) //POSIXct 객체, 이 함수는 벡터 데이터를 처리할 수 있습니다.
> as.Date(ISOdate(년,월,일)) //Date 객체로 변환
7.12 율리우스력 날짜 얻기
율리우스력 날짜는 임의의 시작점(R에서는 1970년 1월 1일) 이후의 일수입니다.
>as.integer(as.Date(“2014-10-23”))
>julian(as.Date("2014-10-23")) //방법 2, 시작점을 동시에 출력
7.13 날짜 일부 추출
> p <— as.POSIXlt(as.Date(“2014-10-23”)) //날짜 및 시간 객체
> p$mday //지정된 날짜(1~31)에 해당하는 월의 일수
> p$sec //초(0~61)
> p$min //분(0~59)
> p$hour //시간(0~23)
> p$mon //월(0~11)
> p$year //연도(1900년 이후)
> p$wday //특정 요일(0~6, 일요일=0)
> p$yday //연중 특정일(0~365)
> p$isdst //일광 절약 시간 표시
7.14 날짜 시리즈 생성
> seq(from=s,to=e, by=1) //s와 e는 각각 시작 날짜와 종료 날짜입니다.
> seq(from=2,by=”month”, length.out=7) //7개의 날짜 나열