有成千上萬個答案,描述如何從廣泛變爲長時間並由特定變量組織。我不知道我不是在纏着我的頭。 我需要組織最初作爲評價者,obs,val1,val2等開始的行進入評價者IRR下的列。將數據重塑爲基於R中變量的長列(針對IRR)
鑑於類似我的數據格式,可以在創建:
r1 <- c('bob', 'sally', "george", "bob", "sally", "george")
r2 <- c(1,1,1,2,2,2)
r3 <- c("bad", "good", "good", "good", "good", "bad")
r4 <- c("bad", "bad", "good", "good", "good", "bad")
df=data.frame(r1,r2,r3,r4)
df = setNames(df, c('rater','obs', 'val1', 'val2'))
我需要將數據組織成基於「評價者」列。凡是工作將是巨大的,特別是如果 'OBS'(觀察數)可以保留,例如,obs1_val1,obs1_val2等
沿着線的東西:
dcast(df, obs ~ rater)
它創建:
obs bob george sally
1 1 bad good bad
2 2 good bad good
但是,這會聚合並刪除val2的值。
相反,我需要沿着線的東西:
bob sally george
obs1_val1 bad good good
obs1_val2 bad bad good
obs2_val1 good good bad
obs2_val2 good good bad
尋找類似的responses,我看到的建議,melt
,然後dcast
[我真的不希望聚合 - 而只是在堆列]。
由於字符串val1和val2的應該考慮的因素我已經試過:
df$"val1" <- factor(df$val1, levels=c("bad","good"))
df$"val2" <- factor(df$val2, levels=c("bad","good"))
無任何影響。獲取:
Aggregation function missing: defaulting to length
obs bob george sally
1 1 2 2 2
2 2 2 2 2
這是沒有用的。
?
'dcast(melt(df,1 :2),變量+ obs〜rater)'或'dcast(熔化(df,1:2),obs +變量〜rater)''如果你想讓它按'obs'排序 –
看着輸出我不確定1:2選擇什麼。 ? – Donnied
前兩欄 –