2017-01-11 6 views
0

私は、それぞれのエントリにIDタグが付いた4列のdata.frame(tt)を持っています。私はIDごとに、最低でSkinTempデータを分割したいと思います:IDに基づいてすべてのデータを別のdata.frameで分割します。

dput(head(tt,10)) 
structure(list(id = c("1", "1", "1", "1", "1", "1", "1", "1", 
"1", "1"), Time = c(139, 139, 139, 139, 139, 139, 139, 139, 139, 
139), SkinTemp = c(29.559, 29.561, 29.563, 29.564, 29.566, 29.568, 
29.57, 29.572, 29.574, 29.576), HeartRate = c(33.689, 33.689, 
33.689, 33.689, 33.689, 33.689, 33.689, 33.689, 33.689, 33.689 
), RespirationRate = c(11.641, 11.641, 11.641, 11.641, 11.641, 
11.641, 11.641, 11.641, 11.641, 11.641)), .Names = c("id", "Time", 
"SkinTemp", "HeartRate", "RespirationRate"), row.names = c(NA, 
10L), class = "data.frame") 

私はその後、IDに基づいて、各皮膚温度の最小値が見つかりました:

TempMins <-aggregate(tt$SkinTemp, by=list(minID=tt$id), FUN=min, na.rm=TRUE) 
dput(head(TempMins)) 

私に次を与える:

structure(list(minID = c("1", "10", "11", "12", "13", "14" 
), x = c(29.559, 21.57, 30.311, 34.754, 20.57, 22.879)), .Names = c("minID", 
"x"), row.names = c(NA, 6L), class = "data.frame") 

元のデータのすべてのスキン温度(IDでグループ化されたもの)を各IDの最小値でどのように割りますか?

私はこれのための機能があると思うが、私はGoogleのヒットを得ることはできないようだ。

+1

ライブラリ(dplyr); df%>%group_by(id)%>%mutate(SkinTemp/min(SkinTemp)) ' –

答えて

1

data.tableを使用すると、新しい集約データセットを作成せずに使用できます。 'ID' ごとにグループ化され、(setDT(tt)) 'data.table' に 'data.frame' を変換し、我々は 'SkinTemp'

minによって 'SkinTemp' の値を割ることによって( :=) 'SkinTemp' を割り当てます
library(data.table) 
setDT(tt)[, SkinTemp := SkinTemp/min(SkinTemp), by = id] 

base Rオプションは、次のようにあなたがdplyrでこれを行うことができave

tt$SkinTemp <- with(tt, SkinTemp/ave(SkinTemp, id, FUN = min)) 
+0

ありがとうございました。ベースRを使用しているためにあなたの答えに行きたいと思っています。実際に何が効果的かを視覚化することができます。 – HCAI

1

です。あなたが好むよう

tt %>% group_by(id) %>% mutate(SkinTempDivMinTemp = SkinTemp/min(SkinTemp, na.rm=T)) 

data.tableまたはdplyrメソッドを使用します。私はここにmutate代わりのsummariseを使用するので、あなたは、2セットをマージすることなく、集約されたデータを再利用することができます。

+0

ありがとうございます。私はakrunの答えを出すことに決めました。なぜなら、より複雑なものが何を意味しているのか分からないので(たとえば%/%)、基盤Rで作業することを好むからです。 – HCAI

+0

問題ありません。これはおそらく私がまだdata.tableを使用していないのと同じ理由です。私は、データ操作のためにRベースから 'dplyr 'に切り替えることが、これまで多くのことを助けてくれたと言えるでしょう。 – Wietze314

+0

私は昨日それを使用し始めたので、まだすべての複雑さを解決しなければならないが、それは非常に有用に見える。 – HCAI

関連する問題