2014-05-12 2 views
-1

데이터 세트이라는 data.frame이 있고이 data.frame 내에서 값을 참조 할 수 있기를 원합니다. 특정 열 (반복되는 값)과 각 값별로 합계를 집계/합계합니다.R : 열 내의 값으로 전체 합계 및 전체 사례 수를 집계하고자합니다

특정 열을 호출 할 수 있음을 알고 있습니다. 예를 들어 4 번째 열 데이터를 호출하려면이 메서드를 사용합니다.

dataSet[,4] 

는 데이터 집합이 닮은 경우 :

col1 col2 col3 col4 
3 6 2 1 
5 2 6 2 
5 6 12 3 
4 3 NA 4 
5 2 NA 3 
7 6 NA 1 
6 6 19 4 
9 3 2 1 

I 집계 할 수 있도록하려는 것 (그룹 별, SQL을 알고있는 분들의 경우) col4 값.

하나, 합계 (내가 선택한 모든 열 중 하나),이 경우 Col4를 말하십시오. 그러나 이상적으로 필자는 열을 변수로두고 모든 열의 값을 호출 할 수 있습니다.

그래서 이런 col4 각각의 공통 가치에 대한 그 COL1에 대한 답변을 할 것이다 :

col1 col4 
19  1 
5  2 
10  3 
10  4 

두, 전체 경우의 수를의 "수"열에 의해 표시한다.

count col4 
2 1 
1 2 
1 3 
1 4 

R에 익숙하지 않아 열의 특정 값을 참조 (또는 호출)하는 방법에 어려움을 겪습니다. 나는 dataframe [i, j]에서 i = row, j = col에 대한 참조 부분을 아래로 가지고있다. 3 차 질문은 어디에서 R 내의 모든 객체 (예 : 목록, 데이터 프레임)에 대한 참조 및 호출 (참조)을하는 방법에 대해 자세히 알 수 있습니까?

답변

0

이런 식으로 뭔가요?

d <- structure(list(col1 = c(3L, 5L, 5L, 4L, 5L, 7L, 6L, 9L), col2 = c(6L, 
2L, 6L, 3L, 2L, 6L, 6L, 3L), col3 = c(2L, 6L, 12L, NA, NA, NA, 
19L, 2L), col4 = c(1L, 2L, 3L, 4L, 3L, 1L, 4L, 1L)), .Names = c("col1", 
"col2", "col3", "col4"), class = "data.frame", row.names = c(NA, 
-8L)) 

library(reshape) 
d1 <- melt.data.frame(d, id = 'col4') 
d1$variable <- as.character(d1$variable) 
head(d1) 
     col4 variable value 
1 1  col1  3 
2 2  col1  5 
3 3  col1  5 
4 4  col1  4 
5 3  col1  5 
6 1  col1  7 
library(dplyr) 
d1 %.% 
    group_by(variable, col4) %.% 
    summarise(
    s = sum(value, na.rm = T), 
    c = length(na.omit(value))) 
Source: local data frame [12 x 4] 
Groups: variable 

    variable col4 s c 
1  col1 1 19 3 
2  col1 2 5 1 
3  col1 3 10 2 
4  col1 4 10 2 
5  col2 1 15 3 
6  col2 2 2 1 
7  col2 3 8 2 
8  col2 4 9 2 
9  col3 1 4 2 
10  col3 2 6 1 
11  col3 3 12 1 
12  col3 4 19 1 
+0

: 같은 결과를 제공

table(dataSet$col4) 

나 :

당신이 table 기능을 사용할 수있는 열에서 특정 값의 발생 수를 찾으려면 이것이 방향으로 가고있다. 아래의 답변은 내가 바라는 방향으로 닿았습니다. 하나는 col4를 기준으로 한 열 (Col1)을 합하는 데 사용됩니다. 두 번째 부분은 complete.cases를 계산하는 것입니다. – Paul

+0

이것은 이러한 접근법에서 얻은 것입니다. 그냥 시도 해 봐. 귀하의 계산이 정확하지 않을 수 있습니다. @ samhiggins2001에서 제안한 테이블 솔루션과 코드를 사용해보십시오. –

+0

아마 내 머리 위로 조금 있습니다. (감사합니다 - 나를 뻗어주십시오). d1 기능에서 'd'를 얻을 수 없습니다. 내 디렉토리 또는 data.frame 올바른지 가정하고 있어요? – Paul

1

aggregate 함수를 사용하여 column4의 각 고유 값에 대해 column1의 값의 합계를 찾을 수 있습니다. list를 제공 할 필요가

aggregate(x=dataSet[,"col1"], by=list(dataSet[,"col4"]), FUN=sum) 

: 같은 결과를 제공

aggregate(x=dataSet$col1, by=list(dataSet$col4), FUN=sum) 

또는 : 구문은 다음과 같을 것입니다 (이 기능에 대한 문서는 R 명령 프롬프트에서 help(aggregate)를 입력하여 찾을 수 있습니다) by에 대한 인수가 aggregate 인 경우 처음에는 조금 이상하게 보였지만 값 (x 인수로 전달)을 그룹화하는 여러 필드를 제공 할 수 있으므로 SQL의 group by 절과 동일합니다. 내가 아주 확실하지 않다

table(dataSet[,"col4"])