> d <- matrix(1:9, ncol=3) > d [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > apply(d, 1, sum) [1] 12 15 18 > apply(d, 2, sum) [1] 6 15 24 > apply(iris[,1:4], 1, sum) [1] 10.2 9.5 9.4 9.4 10.2 11.4 9.7 10.1 8.9 9.6 10.8 10.0 9.3 8.5 11.2 12.0 11.0 10.3 11.5 10.7 10.7 10.7 9.4 10.6 [25] 10.3 9.8 10.4 10.4 10.2 9.7 9.7 10.7 10.9 11.3 9.7 9.6 10.5 10.0 8.9 10.2 10.1 8.4 9.1 10.7 11.2 9.5 10.7 9.4 [49] 10.7 9.9 16.3 15.6 16.4 13.1 15.4 14.3 15.9 11.6 15.4 13.2 11.5 14.6 13.2 15.1 13.4 15.6 14.6 13.6 14.4 13.1 15.7 14.2 [73] 15.2 14.8 14.9 15.4 15.8 16.4 14.9 12.8 12.8 12.6 13.6 15.4 14.4 15.5 16.0 14.3 14.0 13.3 13.7 15.1 13.6 11.6 13.8 14.1 [97] 14.1 14.7 11.7 13.9 18.1 15.5 18.1 16.6 17.5 19.3 13.6 18.3 16.8 19.4 16.8 16.3 17.4 15.2 16.1 17.2 16.8 20.4 19.5 14.7 [121] 18.1 15.3 19.2 15.7 17.8 18.2 15.6 15.8 16.9 17.6 18.2 20.1 17.0 15.7 15.7 19.1 17.7 16.8 15.6 17.5 17.8 17.4 15.5 18.2 [145] 18.2 17.2 15.7 16.7 17.3 15.8 > apply(iris[,1:4], 2, sum) Sepal.Length Sepal.Width Petal.Length Petal.Width 876.5 458.6 563.7 179.9
> rowSums(iris[,1:4]) [1] 10.2 9.5 9.4 9.4 10.2 11.4 9.7 10.1 8.9 9.6 10.8 10.0 9.3 8.5 11.2 12.0 11.0 10.3 11.5 10.7 10.7 10.7 9.4 10.6 [25] 10.3 9.8 10.4 10.4 10.2 9.7 9.7 10.7 10.9 11.3 9.7 9.6 10.5 10.0 8.9 10.2 10.1 8.4 9.1 10.7 11.2 9.5 10.7 9.4 [49] 10.7 9.9 16.3 15.6 16.4 13.1 15.4 14.3 15.9 11.6 15.4 13.2 11.5 14.6 13.2 15.1 13.4 15.6 14.6 13.6 14.4 13.1 15.7 14.2 [73] 15.2 14.8 14.9 15.4 15.8 16.4 14.9 12.8 12.8 12.6 13.6 15.4 14.4 15.5 16.0 14.3 14.0 13.3 13.7 15.1 13.6 11.6 13.8 14.1 [97] 14.1 14.7 11.7 13.9 18.1 15.5 18.1 16.6 17.5 19.3 13.6 18.3 16.8 19.4 16.8 16.3 17.4 15.2 16.1 17.2 16.8 20.4 19.5 14.7 [121] 18.1 15.3 19.2 15.7 17.8 18.2 15.6 15.8 16.9 17.6 18.2 20.1 17.0 15.7 15.7 19.1 17.7 16.8 15.6 17.5 17.8 17.4 15.5 18.2 [145] 18.2 17.2 15.7 16.7 17.3 15.8 > colSums(iris[,1:4]) Sepal.Length Sepal.Width Petal.Length Petal.Width 876.5 458.6 563.7 179.9 > colMeans(iris[,1:4]) Sepal.Length Sepal.Width Petal.Length Petal.Width 5.843333 3.057333 3.758000 1.199333
apply()의 단점은,
문자열 데이터와 섞여서 사용될 경우
> 데이터를 모두 문자열로 반환한다는 점
plyr::adply()
> library(plyr) > adply(iris, 1, function(row) { row$Sepal.Length >= 5.0 & row$Species == "setosa"}) $V1 [1] TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE [21] TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE [41] TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [81] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [101] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE [141] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
adply()로 Sepal.Length가 5.0 이상, Species가 setosa인지 확인후 결과를 새로운 col에 기록.
unlist() : 리스트를 벡터로
matrix() : 벡터를 행렬로
as.data.frame() : 행렬을 데이터프레임으로 변환
names() : 리스트로부터 변수명을 얻어와 데이터프레임 각열에 이름을 부여
출처 :: R을이용한 데이터분석실무, 서민구, 2013, p73-76
'시각화 > R' 카테고리의 다른 글
▶R로만드는 데이터시각화 : 데이터멍잉 기초 - tappy, by, aggregate (0) | 2014.04.10 |
---|---|
▶R로만드는 데이터시각화 : 기본예제 - 반복구문 repeat, while, for (0) | 2014.04.08 |
▶R로만드는 데이터시각화 : 기본예제 - 데이터다루기 factor와 vector (0) | 2014.04.04 |
▶R로만드는 데이터시각화 :: ggplot 기초 - iris 시각화 (1) | 2014.04.01 |
▶R로만드는 데이터시각화 :: ggmap응용 - 항공노선시각화 (7) | 2014.03.28 |