2017-06-30 16 views
1

特定の別の列変数に従ってデータフレームに変数を割り当てようとしています。すなわちDataFrame操作R

Dta = matrix(0,10000,2) 
colnames(Dta) <- c("School_ID","Class_ID") 
Dta = as_data_frame(Dta) 
Dta$School_ID = sample(100) 
Dta$School_ID = sort(Dta$School_ID) 
for (i in unique(Dta$School_ID)) Dta[Dta$School_ID == i,'Class_ID'] = sample(5) 

ループなしでgroup_byやその他の演算子を使用すると解決策はありますか?

+1

私はループを避ける方法が必要であると信じています。しかし、再現可能なサンプルデータセットを提供してください。 – www

+0

私は担当者を追加しました。例: – Shin

+0

「Dta%>%group_by(School_ID)%>%mutate(Class_ID = sample(1:5,1))」を試してください。 – Abdou

答えて

1

ここにはdplyrの解決策があります。 dt2が最終出力です。

# Load package 
library(dplyr) 

dt <- data_frame(School_ID = rep(1:100, each = 100)) 

dt2 <- dt %>% 
    group_by(School_ID) %>% 
    mutate(Class_ID = rep(sample(5), 20))