2017-12-19 12 views
0

개수 및 집계 함수를 필드 조건과 함께 요약하는 데 문제가 있습니다.변수 사이의 관계를 찾기 위해 그룹 및 개수 변수를 만드는 방법은 무엇입니까?

예 :

df = tbl_df(data.frame(
    users=c("1", "1", "1", "1", "2", "2", "2", "3", "3", "4", "4", "4", "4"), 
    projects=c("100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112"), 
    from=c("0", "0", "111", "106", "111", "101", "0", "101", "0", "100", "106", "108", "0"))) 

표는 사용자 (사용자)를 포함 다른 사용자 (에서) 다른 프로젝트에서 발생, 사용자 소유의 프로젝트, 프로젝트, 프로젝트.

프로젝트를 통해 다른 사용자와 더 많은 관계를 맺고있는 사용자가 누구인지 알고 싶습니다. 표에서 보듯이 사용자의 프로젝트는 다른 사용자 (에서)가 사용할 수 있고 사용자는 자신의 프로젝트 (프로젝트)를 가질 수 있습니다.

나는 다른 사용자가 사용하는 사용자 프로젝트의 양과 그가 소유하지 않은 사용자 프로젝트의 수와 관계를 계산하는 것에 대해 생각했습니다.

누구나 나에게 ddply 나 summary_group_by 같은 다른 기능을 사용하는 방법에 대한 힌트를 줄 수 있습니까?

for를 사용하여 함수를 생성 할 수 있었지만, 처리에 수백만 명의 사용자가있는 경우 가장 적합한 솔루션이 아닙니다.

미리 감사드립니다.

답변

1
out <- data.frame(summarize(group_by(df, users), 
        number_of_user_owned_projects = length(df$from[df$from %in% projects]), 
        number_of_projects_from_others = length(unique(from[from != 0])))) 
out 
    users number_of_user_owned_projects number_of_projects_from_others 
1  1        3        2 
2  2        2        2 
3  3        1        1 
4  4        2        3 
+0

number_of_user_owned_projects에서, 나는 ** 열에서 ** ** ** 미리 프로젝트에서에 열을 프로젝트의 수를 확인하고 싶습니다. 뿐만 아니라 프로젝트의 금액. 예를 들어, 사용자 1은 프로젝트 101이 다른 사용자에 의해 두 번 사용되도록합니다. 그래서 각 사용자 프로젝트 및 사용자 당 총 분석에 대해이 분석을하고 싶습니다. –

+0

업데이트를 참조하십시오. – AidanGawronski

+0

@AidanGawronski'length (df $ from % projects %) '가 어떻게 작동합니까? –

0
temp = df %>% group_by(from) %>% summarise(cntr = n()) %>% filter(from != 0) 

#temp 

# from cntr 
#1 100  1 
#2 101  2 
#3 106  2 
#4 108  1 
#5 111  2 


output = left_join(df, temp, by = c("projects" = "from")) %>% 
      group_by(users) %>% 
      summarize(user_owned = sum(cntr, na.rm = TRUE), other_owned = sum(from != 0)) 

#output 

# users user_owned other_owned 

#1  1   3   2 
#2  2   2   2 
#3  3   1   1 
#4  4   2   3 
+0

감사! 도와 주셔서 정말 고맙습니다. –

관련 문제