2017-01-18 7 views
1

@hrbrmstrのおかげで、私は "Scraping a xml document (nested url-structure)"という問題の本当の良い解決策を得ました。新しい列に一意の値を設定して他の値を確認してください

しかし、その洞察力の結果として、それは別の問題が浮上:

今、私は次のようなデータ構造を持っている...

$Vorname : chr "Jan" "Jan" "Jan" "Jan" ... 
$ Nachname : chr "Aken" "Aken" "Aken" "Aken" ... 
$ ID  : chr "1627" "1627" "1627" "1627" ... 
$ Fraktion : chr "Die Linke" "Die Linke" "Die Linke" "Die Linke" ... 
$ Reli  : chr "" "" "" "" ... 
$ Geschlecht: chr "Männlich" "Männlich" "Männlich" "Männlich" ... 
$ Auss_ord : chr "Auswärtiger Ausschuss" "Gremium nach § 23c Absatz 8 des Zollfahndungsdienstgesetzes" "Verteidigungsausschuss" "Unterausschuss Abrüstung, Rüstungskontrolle und Nichtverbreitung" ... 

実際に染め分けるは「Auss_ord」である唯一の変数これは、MPのための異なる手数料を価値として含む。

ここで私が望むのは、現在のロングバージョンからデータフレームのワイドバージョンに切り替えることです。

"Auss_ord"のすべてのユニークな値(特定の文字列)に対して、新しい列が存在し、別のオブジェクトが同じ値を持つ "True"天気かどうかをチェックする必要があります。

だから...

 Vorname Nachname ID Fraktion    Reli Geschlecht               Auss_ord 
    <chr>  <chr> <chr>  <chr>    <chr>  <chr>               <chr> 
1  Jan  Aken 1627 Die Linke      Männlich           Auswärtiger Ausschuss 
2  Jan  Aken 1627 Die Linke      Männlich  Gremium nach § 23c Absatz 8 des Zollfahndungsdienstgesetzes 
3  Jan  Aken 1627 Die Linke      Männlich           Verteidigungsausschuss 
4  Jan  Aken 1627 Die Linke      Männlich Unterausschuss Abrüstung, Rüstungskontrolle und Nichtverbreitung 
5 Stephan  Albani 1769 CDU/CSU      Männlich Ausschuss für Bildung, Forschung und Technikfolgenabschätzung 
6 Stephan  Albani 1769 CDU/CSU      Männlich           Ausschuss für Gesundheit 
7 Katrin Albsteiger 1770 CDU/CSU römisch-katholisch Weiblich             Schriftführer/in 
8 Katrin Albsteiger 1770 CDU/CSU römisch-katholisch Weiblich   Ausschuss für die Angelegenheiten der Europäischen Union 

が...にオンにする必要があり...

Example Dataframe (wide version)

私は

d1 <- dcast(df, Vorname ~ Nachname ~ ID ~ Fraktion ~ Reli, value.var="ausord") 

または

などのリシェイプ操作を試してみました
d2 <- reshape(df, idvar = "ID", timevar = "Auss_ord", direction = "wide") 

...しかし、私はあなたが何ができる値

+1

[再現可能な例の作成方法](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5965451#5965451)、データフレーム'str'の出力よりも良いでしょう。 –

答えて

0

の一意性をチェックする(私にとっては)本当にトリッキーな実装のほかに、任意の適切な結果を得ることはありません:

dcast(df,Vorname+Nachname+ID+Fraktion+Reli+Geschlecht~Auss_ord,length) 

length意志得られたデータフレームが「Auss_ord」

0

再作成データ

politik <- read.table(text="Vorname Nachname ID Fraktion Reli Geschlecht Auss_ord 
     Jan  Aken 1627 'Die Linke'   NA    Männlich           'Auswärtiger Ausschuss' 
     Jan  Aken 1627 'Die Linke'  NA    Männlich  'Gremium nach § 23c Absatz 8 des Zollfahndungsdienstgesetzes' 
     Stephan  Albani 1769 'CDU/CSU'   NA   Männlich 'Ausschuss für Bildung, Forschung und Technikfolgenabschätzung'", 
header = TRUE) 
で生成列の0/1を充填することを可能にします

library(dplyr) 
library(tidyr) 
politik %>% 
    mutate(present = TRUE) %>% 
    spread(Auss_ord, present) 

    Vorname Nachname ID Fraktion Reli Geschlecht 
1  Jan  Aken 1627 Die Linke NA Männlich 
2 Stephan Albani 1769 CDU/CSU NA Männlich 
    Ausschuss für Bildung, Forschung und Technikfolgenabschätzung 
1               NA 
2               TRUE 
    Auswärtiger Ausschuss 
1     TRUE 
2     NA 
    Gremium nach § 23c Absatz 8 des Zollfahndungsdienstgesetzes 
1              TRUE 
2               NA 

があなたのカラム名は、現在操作することが非常に困難になることに注意してください広がっtidyr使用して回答。 Auss_ordの名前を変更する前に、いくつかの略頭文字を付けて名前を変更する方が良いでしょう。

関連する問題