2017-05-19 8 views
0

私はこの加速度計のデータセットを持っています。身体加速x時間ごとに、各被験者(全部で30人の被験者)についてn回の観測があるとします。特定の変数に基づく複数行のRでプロットするか?

私はy軸上の異なる色で各対象のこれらの身体加速x時点をプロットするようにプロットを作成したいと思います.x軸は単なるインデックスです。私はこれを試みた:

ggplot(data = filtered_data_walk, aes(x = seq_along(filtered_data_walk$'body-acceleration-mean-y-time'), y = filtered_data_walk$'body-acceleration-mean-y-time')) + 
    geom_line(aes(color = filtered_data_walk$subject)) 

しかし、問題は30行を重ね合わせるのではなく、互いの側に沿って走るということです。つまり、max {n1、n2、...、n30}ではなく、n1 + n2 + n3 + ... + n30 xインデックスポイントになります。これは私の初めての投稿です。私はこれが意味をなさないことを願っています(自分の書式が悪いことを知っています)。

私が考えた解決策の1つは、各対象のすべての観測に対して1からnの値を与える新しい変数を作成することでした。私はsubject1ための6つの観測、subject2ための4つの観測、およびsubject3のための9つの観測を持っていたのであれば、例えば、この新しい変数は次のように配列決定されます:

1 2 3 4 5 6 1 2 3 4 1 2 3 4 5 6 7 8 9 

これを行う簡単な方法はありますか?助けてください。

+2

私はあなたが達成したいのか理解していません。いくつかのデータと希望の結果を追加できますか? – KoenV

答えて

1

x <- data.frame(replicate(5, rnorm(10))) 
x 
#    X1   X2   X3   X4   X5 
# 1 -1.36452272 -1.46446475 2.0444381 0.001585876 -1.1085990 
# 2 -1.41303046 -0.14690269 1.6179084 -0.310162018 -1.5528733 
# 3 -0.15319554 -0.18779791 -0.3005058 0.351619212 1.6282955 
# 4 -0.38712167 -0.14867239 -1.0776359 0.106694311 -0.7065382 
# 5 -0.50711166 -0.95992916 1.3522922 1.437085757 -0.7921355 
# 6 -0.82377208 0.50423328 -0.5366513 -1.315263679 1.0604499 
# 7 -0.01462037 -1.15213287 0.9910678 0.372623508 1.9002438 
# 8 1.49721113 -0.84914197 0.2422053 0.337141898 1.2405208 
# 9 1.95914245 -1.43041783 0.2190829 -1.797396822 0.4970690 
# 10 -1.75726827 -0.04123615 -0.1660454 -1.071688768 -0.3331887 

のようなおもちゃのデータセットのために...あなたは

plot(x[,1], type='l', xlim=c(1, nrow(x)), ylim=c(min(x), max(x))) 
for(i in 2:ncol(x)) lines(x[,i], col=i) 

ようなものでありあなたを得ることができるかもしれない、あなたのデータはdata.frameや行列としてフォーマットされたと仮定すると、さらにフォーマッティングを行うことができます。もちろん、lty=lwd=で、自分の好みのカラーランプなどを使ってください。

データi以下の形式での...

x <- data.frame(id=c("A","A","A","B","B","B","B","C","C"), acc=rnorm(9)) 
x 
# id  acc 
# 1 A 0.1796964 
# 2 A 0.8770237 
# 3 A -2.4413527 
# 4 B 0.9379746 
# 5 B -0.3416141 
# 6 B -0.2921062 
# 7 B 0.1440221 
# 8 C -0.3248310 
# 9 C -0.1058267 

は...あなたはこのことができます

maxn <- max(with(x, tapply(acc, id, length))) 
ids <- sort(unique(x$id)) 
plot(x$acc[x$id==ids[1]], type='l', xlim=c(1,maxn), ylim=c(min(x$acc),max(x$acc))) 
for(i in 2:length(ids)) lines(x$acc[x$id==ids[i]], col=i) 

希望でそこに着くことができ、そして私はあなたの問題がかなり速いです

0

をright--解釈していることdplyrを使用しても問題がない場合は、 group_by各サブジェクトに対して個別のカウンターを適用するにはmutateに実際のカウンターを追加し、ggplotが機能するはずです。 irisデータセットと例:

group_by(iris, Species) %>% 
mutate(index = seq_along(Petal.Length)) %>% 
ggplot() + geom_line(aes(x=index, y=Petal.Length, color=Species)) 

enter image description here

関連する問題