가중치가 부여 된 데이터가 포함 된 그룹별로 두 종류의 빈도 테이블을 계산하고자합니다.가중치 데이터가있는 그룹 별 빈도 테이블 R
다음과 같은 코드로 재현 데이터를 생성 할 수 있습니다
Data <- data.frame(
country = sample(c("France", "USA", "UK"), 100, replace = TRUE),
migrant = sample(c("Native", "Foreign-born"), 100, replace = TRUE),
gender = sample (c("men", "women"), 100, replace = TRUE),
wgt = sample(100),
year = sample(2006:2007)
)
첫째, 나는 이주 상태의 주파수 테이블을 계산하려고 국가 및 연도 별 (기본 VS 외국 태생). 나는 패키지 questionr
및 plyr
를 사용하여 다음 코드를 썼다는 모든 년 동안이 코드를 적용하는 시간을 소요 있도록
db2006 <- subset (Data, year == 2006)
db2007 <- subset (Data, year == 2007)
result2006 <- as.data.frame(cprop(wtd.table(db2006$migrant, db2006$country, weights=db2006$wgt),total=FALSE))
result2007 <- as.data.frame(cprop(wtd.table(db2007$migrant, db2007$country, weights=db2007$wgt),total=FALSE))
result2006<-rename (result2006, c(Freq = "y2006"))
result2007<-rename (result2007, c(Freq = "y2007"))
result <- merge(result2006, result2007, by = c("Var1","Var2"))
내 진짜 데이터베이스를, 나는 10 년 있습니다. 누구든지 빠른 방법을 알고 있습니까?
나는 또한 국가와 연도별로 이주 상태 중 여성과 남성의 비율을 계산하고자합니다. 나는 다음과 같은 것을 찾고있다.
Var1 Var2 Var3 y2006 y2007
Foreign born France men 52 55
Foreign born France women 48 45
Native France men 51 52
Native France women 49 48
Foreign born UK men 60 65
Foreign born UK women 40 35
Native UK men 48 50
Native UK women 52 50
나는이 결과를 얻는 방법에 대해 누구나 알고 있는가?
TIL에 대해'Reduce()' – roman
답변에 많은 @ulfelder 감사하지만 그것과 함께 약간의 문제가있었습니다. 코드를 실행하면 2006 년과 2007 년에 똑같은 결과를 얻었는데 이는 정확하지 않습니다 ... 어떻게 향상시킬 수 있는지 알고 있습니까? 성에 관한 정보를 어떻게 추가 할 수 있는지 알고 있습니까? –
죄송합니다. 방금 게시 한 수정 된 버전을 사용해보십시오. 나는 함수 입력에 컬럼과 같은 이름을 부여함으로써'dplyr'를 혼란스럽게 생각한다고 생각한다. 불행히도'wtd.table'은 양방향 크로스 탭을 허용하는 것으로 나타 났으므로이 접근법에 성별을 추가 할 수 있다고 생각하지 않습니다. 그리고 나는 그러한 가중치가 대체 솔루션을 제안하기 위해 무엇을하는지 충분히 알지 못합니다. – ulfelder