2017-07-07 23 views
0

を使用して名前変更変数とデータフレームIは、データを要約し、異なるデータフレームに動的な列柱とストアを作成します:繰り返しR

col1 col2 col3 
A  1  200 
B  1  300 
A  2  400 

k=c("A","B","C") 
for(i in k) 
    { 
    group_data <- group_by(data[data$col1==i,], col2) 
    summary_i<- summarize(group_data ,paste("var",k[i],sep="_") = n()) 
    } 

予想される出力:

データのようなものです

変数var_A,var_Bおよびvar_Cをそれぞれ含むsummary_A, summary_B, summary_Cという名前の3つのデータフレーム。

+0

それはで動作するように物事が非常に難しくなるので、それはあなたが*本当に*このことを望んでいない可能性があります 'data'と正確な予想結果 – HubertL

+1

を提供してください異なる名前の変数がたくさんあることは楽しいことではありません。一般的に、リスト内の関連するコレクションを使って作業するほうがよいです。ここでより良いアイデア:https://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames – MrFlick

+0

要約内に割り当てまたは貼り付けコマンドを使用することはできませんか? –

答えて

0

@MrFlickが正しく指摘したように、問題を管理するためのより良い方法があります。
とにかく、ここにあなたのコードの作業バージョンです:

data <- structure(list(col1 = structure(c(1L, 2L, 1L), .Label = c("A", 
"B"), class = "factor"), col2 = c(1L, 1L, 2L), col3 = c(200L, 
300L, 400L)), .Names = c("col1", "col2", "col3"), class = "data.frame", row.names = c(NA, 
-3L)) 

k=c("A","B","C") 
for (i in seq_along(k)) { 
    group_data <- group_by(data[data$col1==k[i],], col2) 
    vark <- paste('var',i,sep='_') 
    eval(parse(text=paste("summary_",i," <- summarize(group_data,", vark, " = n())",sep=""))) 
} 

print(summary_1) 
# A tibble: 2 x 2 
# col2 var_1 
# <int> <int> 
# 1  1  1 
# 2  2  1 

print(summary_2) 
# A tibble: 1 x 2 
# col2 var_2 
# <int> <int> 
# 1  1  1 

print(summary_3) 
# A tibble: 0 x 2 
# ... with 2 variables: col2 <int>, var_3 <int> 
関連する問題