0

私はRで作業しており、因子変数の1つであるサービスに関連するさまざまな変数で相関を実行したいと考えています。どうすればいいのか本当にわかりません。私は融解と転置を見てきましたが、これらの関数のどちらも私が必要とする形式を与えてくれません。因子ベクトルを個々のベクトル (サービスの各レベルに対応する) に分割し、何らかの方法で 1 つの数値変数 (sumofcases など) を取得して、新しく作成されたサービス ベクトルの観測値になるようにする必要があると考えています。したがって、サービスの 1 つのレベルは入院であり、別のレベルはケース管理です。次に、「入院」と呼ばれる 1 つのベクトルと「ケース管理」と呼ばれる別のベクトルがあり、各列の観測値は「sumofcases」の対応する値になります。次に、2 つのサービス ベクトル間の相関を実行できます。これにより、多数のデータフレームが作成されます (機能する場合は問題ありません)。

サンプルデータは次のとおりです。

Year   Region      Service         SumofCases
2010     10     Hospitalization       324
2011      1     Case Management       200

そして、私はそれを次のようにしたい:

Year   Region    Hospitalization      Case Management
2010     10        200                    NA
2011      1        NA                     324

因子のレベル間の相関を実行できる相関関数の内部に何かがある可能性もあると思いましたが、これまでのところ何も見つかりませんでした.

@トーマス、あなたの答えに応えて:

これは間違いなく正しい方向に進んでいると思いますが、不均一な因子レベルにどう対処すればよいでしょうか?

私はこのコードを実行しました:

tmp<-MIC$Service levels(tmp) 
levels(tmp)<-c("Ancillary Services", rep("Health Services",2))
cor(as.numeric(tmp),MIC$SumofCases)` 

次のエラーが発生しました:

Error in levels<-.factor`(*tmp*, value = c("Ancillary Services", "Health Services", : >number of levels differs > cor(as.numeric(tmp),MIC$SumofCases) [1] NA`

実行中の出力dput(head(MIC)):

dput(head(MIC))

structure(list(FY = structure(c(6L, 1L, 1L, 1L, 1L, 1L), .Label = c("2006", 

"2007", "2008", "2009", "2010", "2011"), class = "factor"), Region = 

structure(c(1L,4L, 6L, 6L, 9L, 2L), .Label = c("1", "10", "2", "3", "4", "5","6", "7", 

"8", "9"), class = "factor"), SumofCases = c(0,1, 1, 2, 11, 14), Service = 

structure(c(17L, 4L, 4L, 4L,4L, 4L), .Label = c("Ancillary Services", "Behavioral 

Treatment","Care Coordination", "Community Living Supports", "Crisis Services", 

"Dental", "ECT", "Employment Services", "Equipment", "Family Services", "Fiscal 

Intermediary Services", "Health Services", "Hospitalization", "Medication",

"Monitoring", "OT/PT/SLT", "Other", "Peer Services", "Prevention", "Residential 

Treatment", "Respite", "Screening & Assessment", "Therapy", "Transportation"), class = 

"factor")), .Names = c("FY", "Region", "SumofCases", "Service"), 

row.names = c(NA,6L), class = "data.frame")

次のコードを実行すると、cor 関数の NA が得られます。

tmp<-MIC$Service
levels(tmp)
levels(tmp)<-c("Ancillary Services","Behavioral Treatment","Care Coordination",
           "Community Living Supports","Crisis Services","Dental","ECT","Employment Services",         
           "Equipment","Family Services",             
           "Fiscal Intermediary Services","Health Services",             
           "Hospitalization","Medication",                  
           "Monitoring","OT/PT/SLT",                   
           "Other","Peer Services",               
          "Prevention", "Residential Treatment",       
           "Respite","Screening & Assessment",      
         "Therapy","Transportation")
cor(as.numeric(tmp),MIC$SumofCases)

出力:

> cor(as.numeric(tmp),MIC$SumofCases)
[1] NA
4

1 に答える 1

0

あなたがやりたいことはlevels、因子をさまざまなダミー変数に変えてから、そのダミーと他の変数との間でポイントバイシリアル相関を行うことだと思います。ここでいくつかのモック データを作成し、変数OtherVarと因子変数の 2 つの異なるダミー コードとの間の相関を実行します。

df <- data.frame(Year=sort(rep(2001:2010,10)),
    Region=rep(1:10,10), 
    Service.Description=factor(sample(1:3,100,replace=TRUE), 
       levels=c(1,2,3), 
       labels=c("Hospitalization","Case Management","Other")),
    OtherVar=rnorm(100,0,1))

# one level of factor
tmp <- df$Service.Description
levels(tmp)
levels(tmp) <- c("Hospitalization",rep("Other",2))
cor(as.numeric(tmp),df$OtherVar)

# another level of factor
tmp <- df$Service.Description
levels(tmp)
levels(tmp) <- c("Other","Case Management","Other")
cor(as.numeric(tmp),df$OtherVar)
于 2013-05-31T20:14:30.107 に答える