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”,其中包含不同的议员佣金作为价值。

现在,我想要实现的是从当前的长版本切换到数据框的宽版本。

对于“Auss_ord”中的每个唯一值(某些文本字符串),都应该有一个新列,并且如果另一个对象具有相同的值,还应该检查它是否为“真”。

以便...

     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

……应该变成……

示例数据框(宽版本)

我尝试过重塑操作,例如

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

或者

d2 <- reshape(df, idvar = "ID", timevar = "Auss_ord", direction = "wide")

...但是我没有得到任何正确的结果,除了(对我来说)检查值的唯一性的非常棘手的实现

4

2 回答 2

0

你可以这样做:

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

length将允许使用“Auss_ord”生成的列用 0/1 填充生成的数据框

于 2017-01-18T13:05:53.937 回答
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)

使用 tidyr spread 回答

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

请注意,您的列名现在将很难操作。Auss_ord在传播之前用一些简短的首字母缩略词重命名可能会更好。

于 2017-01-18T13:16:43.637 回答