0

私は R を初めて使用し、特定の条件 (Coursera の Johns Hopkins R プログラミング クラスからの最後の割り当て) に基づいて、すべての州から特定のランクにある病院のリストを提供できるコードに取り組んでいます。私は R を学ぶためにクラスを監査していて、最後の部分で立ち往生しています。

基本的に、複数の列 (病院名、州、および特定の状態の 30 日間の死亡者数) を含むデータ セットを使用しています。私は引数を持つ関数を作成していますoutcomenumどこoutcomeに病状numがあり、病院の指定されたランクです。num最終的な目標は、それぞれの州内で特定のランク付けされた病院のリストを含むデータ フレームです。

私がやっていることは、.csv ファイルをデータ フレームに読み込み、重要でない列を削除してから、参照しやすいように列ヘッダーのラベルを付け直すことです。

data <- read.csv("outcome-of-care-measures.csv")
data <- select(data, c(2, 7, 11, 17, 23))
colnames(data) <- c("hospital", "state", "heart attack", 
                    "heart failure", "pneumonia")
data[[outcome]] <- as.numeric(as.character(data[[outcome]]))

次に、病院、州、および死亡者数のみを含むこの新しいデータ フレームを取得し、指定された死亡者数の列のみが新しいデータ フレームに含まれるように単純化します (つまり、「心臓発作」が入力された場合、分析対象として選択された唯一の列です)。私の方法は、リストを取得して州の略語でアルファベット順に並べ替え、その後に死亡者数を昇順に並べ替えることです。

outcomedata <- select(data, hospital, state, matches(outcome))
outcomedata <- arrange(outcomedata, outcomedata$state, outcomedata[[outcome]])

次に、この新しいデータ フレーム リスト内の各データ フレームにその州のみの病院が含まれるように、大きなデータ フレームを州ごとに分割します。

statesplit <- split(outcomedata, outcomedata$state)

rank()私の考えは、関数を使用して各データ フレームの引数として死亡率列を渡すことで、各州内の各病院のランクを含む各データ フレーム内に新しい列を作成することでした。言い換えれば、lapply()それぞれのデータ フレームの変数名を参照することによって、それぞれのデータ フレーム内の病院のランクを持つ新しい列を各データ フレームに作成するために使用できる方法はありますか?次の行に沿って:

hospital_rank <- rank(outcomedata[, 2])
outcomedata <- mutate(outcomedata, Rank = hospital_rank)
specific_rank <- num
  
rank_hospital <- filter(outcomedata, outcomedata$Rank == specific_rank)

ただし、これを EACH データ フレームに対して実行し、すべての州で指定されたランクにあるすべての病院を含むデータ フレームを返します。

ありとあらゆる助けをいただければ幸いです、ありがとう!!

編集:意図した結果

  • 引数outcomeを取っnumて関数に入れる
  • 病院名と州を含むデータ フレームを表示します。これらはすべて、numその州内のランクにあります。

たとえば、num = "best"各州で 1 位のランクを見つけるように設定された関数の 1 つの側面があります。

outcomedata <- select(data, hospital, state, matches(outcome))
outcomedata <- arrange(outcomedata, outcomedata$state, outcomedata[[outcome]])
outcomedata <- distinct(outcomedata, outcomedata$state, .keep_all = TRUE)

   return(outcomedata)

これにより、この出力が返され、すべての状態で続行されます。しかし、ランク 1 を見つける代わりに、最初の関数に引数として渡された任意のランクを見つけるにはどうすればよいでしょうか?

4

0 に答える 0