2017-12-13 6 views
1

내 데이터 세트는 다음과 같습니다. thatR에서 SQL과 유사한 쿼리 또는 루프를 생성 하시겠습니까?

동일한 학교 유형이 같은 지역에 표시됩니다. 변수가있는 데이터 집합으로 끝낼 수있는 방법이 있다면 내가보고 싶은 무엇 은 다음과 같습니다

-School_name

-total_this 년 = 같은 동네의 합에 대한 no_of_grads_this_year

- total_last_year = 같은 이웃에 대해 no_of_grads_last_year를 합계합니다.

최종 목표는이 두 개의 새로운 열 (total_this, total_last_year)을 만들고이를 학교 이름과 일치시키는 것입니다. 그래서 내가 뭘하려 this

과 같이 표시됩니다

temp <- data%>% select(school_name,neighborhood,no_grads_this_year,no_of_grads_last_year)%>% filter(unique(id))%>% mutate() < (잘못이기 때문에 표현의 방식이 완전한 시도되지 않음) --- 여기이 두 새 열을 만드는 염두에 있었고, 이웃 지표가 같은 행의 합계가되도록 설정합니다. 하지만이 작업을 수행하는 방법을 모르겠습니다.

답변

2

이 원하는 출력 당신에게 그것은 또한 아주 잘 예를 내려 놓고, 작동

as.data.frame(data %>% group_by (School,Neighbourhood)%>% summarise(sum_this_year= sum(This.Year),sum_last_year = sum(Last.Year))) 
+0

은 dplyr 및 tidyr 패키지를 사용합니다. –

+0

그것은 작동합니다! 감사! R에서 이러한 "질의"를 연습 할 수있는 리소스를 권장합니까? 나는 dplyr로 조금 연습했지만 지금 볼 수 있듯이 나는 요청을 정리 (그룹화, 요약)하는 올바른 방법으로부터 벗어나는 방법이었다. – Iniciador

+0

[this] (https://cran.rstudio.com/web/packages/dplyr/vignettes/dplyr.html)로 시작하는 것이 좋겠다고 생각되면 알려 주시기 바랍니다. –

1

자료 R 솔루션 :

df <- data.frame(school = c("A", "A", "B", "B", "B"), 
       neighborhood = c(1,1,2,2,2), 
       no_grads_this_year = c(10,20,40,35,30), 
       no_grads_last_year = c(15,15,80,70,70)) 

> df 
    school neighborhood no_grads_this_year no_grads_last_year 
1  A   1     10     15 
2  A   1     20     15 
3  B   2     40     80 
4  B   2     35     70 
5  B   2     30     70 

df2 <- aggregate(df[,3:4], list(df$school, df$neighborhood), sum) 
names(df2) <- c("School Name", "Neighborhood", "total_this_year", "total_last_year") 

> df2 
    School Name Neighborhood total_this_year total_last_year 
1   A   1    30    30 
2   B   2    105    220 
+1

을 주어야한다, 나뿐만 아니라 것을 시도 할 것이다. – Iniciador

관련 문제