2016-10-26 6 views
3

thisthisのような問題がありますが、私は後のことが分かりません。文字がひねった長い文字から長い文字へ

私は、次のサンプルデータセットがあります。

country_code=c('USA','USA','USA','USA','USA','USA','CHN','CHN','CHN','CHN','CHN','CHN') 
target_var=c('V1','V1','V1' ,'V2' ,'V2' ,'V2' ,'V1' ,'V1' ,'V1','V2' ,'V2' ,'V2') 
VAR=  c('X7','X8','X140','X114','X18','X28','X29','X22','X2','X22','X23','X24') 
Ranking= c(1 ,2.5 ,2.5 ,1.5 ,1.5 ,1.5 , 1 ,2 ,3 ,1.5 ,1.5 ,3) 
df<-data.frame(country_code,target_var,VAR,Ranking) 

をそして私はCOUNTRY_CODEとtarget_varのすべての組み合わせのためのワイドフォーマットに長いから変換する必要があります。私が指摘していたひねりは、私はランキングでトップXのVARを保持したいだけです(この例では2としましょう)。したがって、例のデータセットの最終結果は次のようになります:

"ネクタイ"が保持されるので、トップ2の代わりにトップ3を取得します。その代わりにCHNでネクタイが発生する可能性があります。

enter image description here

私は、ネストされたループとrbindで試してみましたが、私はそれを動作させることができないのです。私はまた、幅広い長さのスレッドを見てきましたが、大多数のVARの文字ではなく「形状変更」の数字だけを見ました。私はdplyr解決策が理にかなっていると思うが、私はそれを働かせることはできない。ありがとう

+0

てみてください 'ワイド' に '長い' から、その後spread(2 、%=ランク付け)%>%mutant(n = row_number())%>%select(-Ranking)%>%spread(n、VAR) ' – akrun

+1

解決策として追加したいかもしれません.... !!本当にありがとう! –

答えて

4

我々は、行をサブセット化top_nを使用することができ、および%>%top_n DF%>%GROUP_BY(COUNTRY_CODE、target_var) `

library(tidyr) 
df %>% 
    group_by(country_code, target_var) %>% 
    top_n(2, wt = Ranking) %>% 
    mutate(n = row_number()) %>% 
    select(-Ranking) %>% 
    spread(n, VAR, sep="") 
+1

もう一度ありがとう、私はいくつかの欲求不満から私を救った.. –