2017-09-19 14 views
0

解決するパズルがあります。2つのカテゴリ変数と1つの連続変数を持つ表の複数の測定値の平均値を計算します。

table(ranktab$expcode, ranktab$rank) 

私は普通のテーブルを取得:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 
    ER02 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER03 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER04 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER05 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER07 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
    ER11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER14 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
    ER16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 
    ER18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
    ER19 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER22 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER23 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    ER26 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 

今私が行列を取得したいと思い は、これは私がこのように、このデータのテーブルを呼び出すと、データ

# A tibble: 351 x 3 
# Groups: expcode [?] 
    expcode rank distributpermm.3 
    <chr> <int>   <dbl> 
1 ER02  1   892.325 
2 ER02  2   694.030 
3 ER02  3   917.110 
4 ER02  4   991.475 
5 ER02  5   1487.210 
6 ER02  6   892.325 
7 ER02  7   694.030 
8 ER02  8   1710.290 
9 ER02  9   1090.620 
10 ER02 10   1288.915 
# ... with 341 more rows 

与えられ、上記の表のように見えますが、データフレームに3つ目の変数のバルブがある場合は、2つの観測値があれば、それらの平均値をとっています。

+0

あなたは精巧にする必要があります。 「2つの観測がある場合」とは、長い形式で、広い形式で表示されていますか?例えばdistributpermm.4、distributpermm.5などのような別の列を意味しますか? –

+0

などを参照している、またはなどのタプルを参照する値の平均値を取得しますか?私は第2のものと思う、それは2番目の列が無視されるべきであるように思えますか? – Ansharja

+0

はい、@Patrik_P、データは長い形式です。 –

答えて

0

のは、あなたの最初のデータがdfデータフレームに

df1 <- with(df, aggregate(distributpermm.3, by = list(expcode, rank), mean)) 
colnames(df1) <- colnames(df) 

#this will give you final output in the desired format 
xtabs(distributpermm.3 ~ expcode + rank, df1) 

であることを考えるが、この情報がお役に立てば幸い!

+0

これは私が正確に探していることです、ありがとうございます。 –

+0

助けてくれてうれしいです:) – Prem

0

変数への相対変数の平均を取得したい場合は、aggregate関数を使用できます。

はこれを試してみてください:

expcode = c (rep ("ER02", 3), rep ("ER03", 4), "ER04", rep ("ER05", 2)) 
rank = c (1, 2, 3, 1, 2, 3, 4, 1, 1, 2) 
ddistributpermml.3 = c (892.325, 694.030, 917.110, 991.475, 1487.210, 892.325, 694.030, 1710.290, 1090.620, 1288.915) 

data = data.frame (expcode, rank, ddistributpermml) 

res = aggregate (data [, 3], list (data$expcode), mean) 
colnames (res) = c ("expcode", "mean (distributpermm.3)") 

res 

# > res 
#  expcode   mean (distributpermm.3) 
# 1 ER02    834.4883 
# 2 ER03    1016.2600 
# 3 ER04    1710.2900 
# 4 ER05    1189.7675 

あなたには、いくつかの方法で変数を保持したい場合は、あなたが取得したいのか明確にしてください。

関連する問題