1

次のコードを使用して、元のデータ 'pseudo' から data.frame 'df' を生成しました。

> df<-pseudo %>% group_by(Drug, CLSI_interpretation) %>% 
      summarise(n = n()) %>% 
      filter(Drug %in% c('Cefepime', 'Ceftazidime', 'Piperacillin','Piperacillin/tazobactam','Imipenem','Meropenem','Doripenem','Ciprofloxacin','Levofloxacin','Gentamicin','Tobramycin','Amikacin')) %>% 
      mutate(freq = (n/sum(n)*100))

さらに、'Drug' から 'class' 列を作成する非常に長い mapvalues 関数。

これまでのところすべて順調です。次のようなデータセットを生成します。

Drug         CLSI   n       freq        class
Amikacin        I   7213    4.25503047  Aminoglycosides
Amikacin        R   13995   8.25580915  Aminoglycosides
Amikacin        S   148309  87.48916038 Aminoglycosides
Cefepime        I   13326   8.87713502  Cephalosporins
Cefepime        R   9744    6.49098031  Cephalosporins  
Cefepime        S   127046  84.63188468 Cephalosporins
Ceftazidime     I   10836   5.98558290  Cephalosporins
Ceftazidime     R   15276   8.43814732  Cephalosporins
Ceftazidime     S   154923  85.57626978 Cephalosporins
Ciprofloxacin   I   8949    4.74295103  Fluoroquinolones
Ciprofloxacin   R   31563   16.72832309 Fluoroquinolones

私は次のステップに苦労しています。このデータを「クラス」ごとにグループ化し、クラスごとに CLSI %in% c('I','R') の「n」を合計し、新しい頻度を生成する必要があります...基本的に、n(I + R各クラスの )/n(I+R+S) および n(S)/n(I+R+S)。ある変数 (n) を別の変数 (CLSI) への参照に基づいて要約し、3 番目 (クラス) でグループ化する必要があるため、要約関数を理解するのに多くの問題があります。ご協力いただきありがとうございます。

4

1 に答える 1

6

データの読み取りを含め、完全なコードを表示することは常に良いことです。pseudoあなたのデータのようです。パイプ内の項目の構文は %>%、最初のパラメーターが暗黙的にパイプの内容であるという点で、通常の R とは少し異なります。または、単純に、呼び出しから「疑似」を削除します。

library(dplyr)
pseudo = read.table("a.csv",header=TRUE)
pseudo <- pseudo %>%
  group_by(class, CLSI) %>% summarise(n= n())
于 2015-04-21T07:19:13.757 に答える