質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

1回答

968閲覧

測定時間の最初と最後のデータをそれぞれで抽出する方法

tyarinosuke

総合スコア9

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/11/13 06:33

編集2020/11/18 03:39

医学研究のデータ整理でRを使用しています。

研究内容としては、
患者に対して処置Aを実施することで、処置前後のバイタルサインに変化があるか。
という内容です。

サンプルデータとして、患者A,患者Bに対して処置Aを行ったデータを添付します(データはエクセルのスクショになっています)
バイタルサインの測定回数が複数回あるので、処置前後の比較ができるのですが、前後のバイタルサインのみ抽出する方法がわからず、
上手く検定をかけられません。

同一の患者での最初のバイタルサインと最後のバイタルサインを抽出する方法があれば、教えてください。
よろしくお願い致します。

イメージ説明

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
以下、コメント欄の追記

data_merge_sample %>% group_by(patient, procedure, SPO2) -> testmd1
testmd1min <- summarize(testmd1, min(as.character(vital_time)))
View(testmd1min)

minに振り分けると、minだけが振り分けられずすべてが残ってしまいます

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

  1. 患者および処置実施時刻をキーとしてデータフレームをグループ化。
  2. それぞれのグループについてバイタルサイン時刻のminとmaxを求める。
# 適当に作ってみたテストデータ > testdf Patient Treatment Measure 1 A 2019/1/1 23:30 2019/1/1 23:16 2 A 2019/1/1 23:30 2019/1/1 23:29 3 A 2019/1/1 23:30 2019/1/1 23:38 4 B 2020/1/1 23:30 2020/1/1 23:16 5 B 2020/1/1 23:30 2020/1/1 23:29 6 B 2020/1/1 23:30 2020/1/1 23:38
library(tidyverse) testdf %>% group_by(Patient, Treatment) -> testdf1 testdf1min <- summarize(testdf1, min(as.character(Measure))) testdf1max <- summarize(testdf1, max(as.character(Measure))) df2 <- merge(testdf1min, testdf1max, by=c("Patient","Treatment")) colnames(df2) <- c("Patient", "Treatment", "First measure", "Last measure")
> df2 Patient Treatment First measure Last measure 1 A 2019/1/1 23:30 2019/1/1 23:16 2019/1/1 23:38 2 B 2020/1/1 23:30 2020/1/1 23:16 2020/1/1 23:38

参考:dplyr: 高速data.frame処理 - Heavy Watal

投稿2020/11/13 08:44

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tyarinosuke

2020/11/16 01:52

回答ありがとうございます。 上記のminとmaxにバイタルサインの数字も一緒に入れこむことは可能でしょうか? 応用でやってみましたが、上手くminとmaxに振り分けられません。 よろしくお願い致します。
KojiDoi

2020/11/16 05:05

その「うまく振り分けられない」コードを質問に追記していただけますか。
tyarinosuke

2020/11/17 04:49

> data_merge_sample %>% group_by(patient, procedure, SPO2) -> testmd1 > testmd1min <- summarize(testmd1, min(as.character(vital_time))) `summarise()` regrouping output by 'patient', 'procedure' (override with `.groups` argument) > View(testmd1min) SPO2(バイタルサイン)の情報を追加し、minに分けたとき、最小だけが抽出されず、ほかのデータもそのままになります。
KojiDoi

2020/11/17 05:12

data_merge_sampleの内容も提示できますか? 数行分で結構です。これらはコメントに追記するのでなく、質問を編集してコードとして追記していただけると助かります。
tyarinosuke

2020/11/18 03:34

data_merege_sampleの内容は、質問内にある表です バイタルサインをSPO2という表示に変えています。 質問の編集に関して承知いたしました
KojiDoi

2020/11/18 12:40

group_by時にSPO2まで含めてしまってはおかしいでしょう。そうではなくvital_timeでグループ分けしなければならないはずです。 あとはminとmaxをそれぞれ得て、mergeして重複列を取り除けば期待したものになると思います。
tyarinosuke

2020/11/18 14:53

丁寧に教えていただいてるところすみませんが、SPO2を含めての最小と最大にうまく振り分けられないです。。 # 適当に作ってみたテストデータ テストデータでSPO2の数字を入れこんでやるコマンドをご教授願いたいです。。
KojiDoi

2020/11/20 07:56

問題点を共有できているか自信がありませんが、上記で示したスクリプトで行としてはデータが取り出せているはずなので、これと元データフレームとの間で再度mergeをかければSPO2なるデータも取り込めるのではないでしょうか。
tyarinosuke

2020/11/24 11:08

いろいろ試してみましたが、上手くいきません。。 SPO2でminを追加って最小値を求めても100が表示され、最小値を表示できませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問