2016-04-12 27 views
0

Aşağıdaki veri Her cinsiyet i için özetler 2 yeni değişkenler) Diffa ve DiffB pozitif olduğu için satır sayısı yaratmak istiyoruzdplyr özetlemek mantık durumu

df <- data.frame(Gender = c(rep(c("M","F"),each=4)), 
      DiffA=c(1,1,-1,-1,1,1,1,-1), 
      DiffB=c(1,-1,1,-1,1,1,1,-1)) 

çerçeve ve var ii) satır sayısı için Diffa ve DiffB elde etmek için negatif: Ben satırların sayısını ve gerekli mantıklı bir ifade döndürür dplyr n() den özet işlevini birleştirmek için başarısız olmuş

df2 <- data.frame(Gender = c("M","F"), 
      Diff_Pos=c(1,3), 
      Diff_Neg=c(1,1)) 

. Gerçek veri -1 ve 1 ötesine giderse Şimdiden teşekkürler

+1

'... toplamı (Diffa> 0 & DiffB> 0) olduğunu ...' – eddi

cevap

3

I

library(tidyr) 
df %>% filter(DiffA == DiffB) %>% count(Gender, DiffA) %>% spread(DiffA, n) 

    Gender -1  1 
# (fctr) (int) (int) 
# 1  F  1  3 
# 2  M  1  1 

benzer data.table kod yapıyor düşünün

dcast(df[DiffA == DiffB, .N, by=.(Gender, DiffA)], Gender ~ DiffA) 

# Gender -1 1 
# 1:  F 1 3 
# 2:  M 1 1 

olduğunu sign() ilgili sütunları sarın.

0

Bu çalışması gerekir:

İşte
df %>% 
    dplyr::mutate(
    Diff_Pos = DiffA > 0 & DiffB > 0, 
    Diff_Neg = DiffA < 0 & DiffB < 0) %>% 
    dplyr::group_by(Gender) %>% 
    dplyr::summarise(
    Diff_Pos = sum(Diff_Pos), 
    Diff_Neg = sum(Diff_Neg)) 
1

bir base R seçenek

with(subset(df, DiffA==DiffB), table(Gender, DiffA)) 
#  DiffA 
#Gender -1 1 
#  F 1 3 
#  M 1 1