1

Rを使用して表に2階乗のデータを表示する可能性はありますか?

レプリケートを使用した私の例を検討してください。

したがって、すべてのセルに 2 つ以上の値があります。

ftable() と table() を使用してみましたが、どこにも行きません:(

助けてくれてありがとう

入力例

A    B    Value
1    1    1.2
1    1    1.4
1    2    2.1
1    2    2.0
2    1    1.1
2    1    1.2
2    2    3.1
2    2    3.1

望ましい出力、次のようなもの ここに画像の説明を入力

4

2 に答える 2

3

おそらく、次のようなものが役立つでしょう。

library(data.table)
library(reshape2)
dcast.data.table(
  as.data.table(df)[, `:=`(A = paste0("A", A),   ## Prefix A values with "A"
                           B = paste0("B", B))], ## Prefix B values with "B"
  A ~ B, value.var = "Value",                    ## Our casting formula
  fun.aggregate = function(x)                    ## Our aggregation formula
    paste(sprintf("%2.2f", x), collapse = "/"))  ## sprintf -> uniform format
#     A        B1        B2
# 1: A1 1.20/1.40 2.10/2.00
# 2: A2 1.10/1.20 3.10/3.10

各ステップで何が起こっているかを説明するために、コードにコメントを追加しました。

于 2014-12-05T14:24:34.137 に答える
0

tapply関数は、交差分類された値に適用される関数を取得するための標準の base-R メカニズムです。

tapply(dat$Value, list(A=dat$A,B=dat$B) , function(x) paste(x,collapse="/"))
#----------
   B
A   1         2        
  1 "1.2/1.4" "2.1/2"  
  2 "1.1/1.2" "3.1/3.1"

注釈が必要な場合:

tapply(dat$Value, list(A=dat$A,B=dat$B) , function(x) paste("V1=",x[1],"V2=",x[2]))
#--------------
   B
A   1                 2                
  1 "V1= 1.2 V2= 1.4" "V1= 2.1 V2= 2"  
  2 "V1= 1.1 V2= 1.2" "V1= 3.1 V2= 3.1"
于 2014-12-15T01:50:51.817 に答える