티스토리 뷰
집단별로 함수 적용하기
1. 벡터(집단을 알려주는 벡터를 사용)
v = 1:12 # 자료
g = c(rep(1,9), rep(2,3) # 집단 소속을 알려주는 벡터
# c(rep(1,9), rep(2,3))=c(1,1,1,1,1,1,1,1,1,2,2,2)
tapply(v, INDEX = g, FUN=sum)# 집단 별로 구성원에 대해 sum을 적용
g2 = c(rep("M",9), rep("F",3)) # 또다른 벡터 : 집단 소속을 알려줌.
tapply(v, INDEX = g2, FUN=mean)
# g2에 따라 결정된 집단별로 구성원에 대해 mean을 적용
2. 매트릭스(행 또는 열별로 함수 적용)
m=matrix(1:12, nrow=3)
apply(m, FUN=mean, 1) # 같은 행끼리
apply(m, FUN=mean, 2) # 같은 열끼리
3. 리스트(원소별로 함수 적용)
l=list(c(1,2,3,4,5), c(6,7,8), c(9,10,11,12))
# 리스트 l은 3개의 원소로 이루어졌으며, 첫 번째 원소는 c(1,2,3,4,5)
# 두 번째 원소는 c(6,7,8), 세 번째 원소는 c(9,10,11,12)
lapply(l, FUN=mean) # 리스트의 원소들끼리
sapply(l, FUN=mean) # lapply and Simplify to a vector
4. 데이터 프레임(집단을 알려주는 벡터를 사용. 각 열별로 함수 적용)
b <- read.fwf("winner.txt",c(3,-1,20))
print(b, quote=T)
b$V2 <- gsub("^\\s+|\\s+$", "", b$V2)
b$V3 = sub("^\\s*(\\w+)\\s+.*", "\\1", b$V2)
aggregate(b, by=list(b$V3), FUN=length)
cf) table(b$V3)
aggregate(b, by=list(b$V3), FUN=list)
b$V1 = as.character(b$V1)
bAggr = aggregate(b, by=list(b$V3), FUN=list)
bAggr2 = aggregate(bAggr, by=list(c(1,1,2,3,4,5,5,6,7,8,9,10,11)),
FUN=function(x) { list(unlist(list(x))) } )
bAggr[, 1:2]; bAggr2[, 1:3]
'차기작 : R을 배우자' 카테고리의 다른 글
다중 회귀 분석시 표본의 최소 크기 (0) | 2013.12.28 |
---|---|
다중 회귀 분석과 독립 변수의 상관 (0) | 2013.12.14 |
독립 변수의 범위를 제한함에 따라 생기는 회귀계수의 표본오차 증가 (0) | 2013.12.08 |
Panel Data 분석 (0) | 2013.11.28 |
R의 특징 : 벡터 v에 대해 v[v<3]은? (0) | 2013.10.27 |