将唯一值转换为新列并检查所有其他值
Turn unique values into new columns and check for all other values
感谢@hrbrmstr,我得到了一个很好的解决“”问题的方法。
但由于这种洞察力,又出现了另一个问题:
现在我得到了以下data-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" 中的每个唯一值(特定文本字符串),都应该有一个新列,并且还要检查它是否 "True" 天气另一个 object 具有相同的值.
这样...
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")
...但我没有得到任何正确的结果,除了(对我而言)检查值的唯一性的非常棘手的实现
你可以这样做:
dcast(df,Vorname+Nachname+ID+Fraktion+Reli+Geschlecht~Auss_ord,length)
length
将允许用 "Auss_ord"
生成的列用 0/1 填充结果数据框
重新创建数据
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
可能更好。
感谢@hrbrmstr,我得到了一个很好的解决“
但由于这种洞察力,又出现了另一个问题:
现在我得到了以下data-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" 中的每个唯一值(特定文本字符串),都应该有一个新列,并且还要检查它是否 "True" 天气另一个 object 具有相同的值.
这样...
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")
...但我没有得到任何正确的结果,除了(对我而言)检查值的唯一性的非常棘手的实现
你可以这样做:
dcast(df,Vorname+Nachname+ID+Fraktion+Reli+Geschlecht~Auss_ord,length)
length
将允许用 "Auss_ord"
重新创建数据
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
可能更好。