我正在处理看起来像这样的数据:
AF: AU:
1 MIT Duflo, Esther
2 NBER; NBER Freeman, Richard B.; Gelber, Alexander M.
3 U MI; Cornell U; U VA Bound, John; Lovenheim, Michael F.; Turner, Sarah
4 Harvard U; U Chicago Fryer, Roland G., Jr.; Levitt, Steven D.
5 U OR; U CA, Davis; U British Columbia Lindo, Jason M.; Sanders, Nicholas J.; Oreopoulos, Philip
我有两个变量,AF:隶属关系,AU:作者。不同的作者和单位之间用分号分隔,我想使用sepeparate_rows-command并创建如下内容:
AF: AU:
MIT Duflo, Esther
NBER Freeman, Richard B.
NBER Gelber, Alexander M.
U MI Bound, John
Cornell U Lovenheim, Michael F.
U VA Turner, Sarah
Harvard U; Fryer, Roland G., Jr.
U Chicago Levitt, Steven D.
U OR Lindo, Jason M.
U CA, Davis Sanders, Nicholas J.
U British ColumbiaOreopoulos, Philip
标准版本的eparate_rows()会生成一条错误消息,可能是因为我的数据包含NA:
authaf_spread<-separate_rows(authaf, 1:2, sep=";")
Error: All nested columns must have the same number of elements.
我下载并安装了开发版本,这给了我另一个错误消息:
authaf_spread<-separate_rows(authaf, 1:2, sep=";")
Error: No common size for `AF:`, size 3, and `AU:`, size 4.
Call `rlang::last_error()` to see a backtrace
这是什么意思,我该如何避免该错误?
如果有人感兴趣,我会在整个文件上附加一个链接:
https://www.dropbox.com/s/z456w7ll7v7o79z/authors_affiliations.csv?dl=0
答案 0 :(得分:2)
如果您两次致电separate_rows
,它将起作用。我使用了来自stringr的str_trim
来删除作者姓名和从属之前和之后出现的空格,并使用了drop_na
的tidyr来删除了两列均具有NA的行。
# Loaded your .csv file as variable 'df'
authors <- df %>%
separate_rows(AF., sep = ";") %>%
separate_rows(AU., sep = ";") %>%
mutate_all(~ str_trim(., side = "both")) %>%
drop_na
# A tibble: 24,877 x 2
AF. AU.
<chr> <chr>
1 MIT Duflo, Esther
2 NBER Freeman, Richard B.
3 NBER Gelber, Alexander M.
4 NBER Freeman, Richard B.
5 NBER Gelber, Alexander M.
6 U MI Bound, John
7 U MI Lovenheim, Michael F.
8 U MI Turner, Sarah
9 Cornell U Bound, John
10 Cornell U Lovenheim, Michael F.
# … with 24,867 more rows
您还可以使用distinct
删除与作者和隶属关系重复的行。
authors %>% distinct(AF., AU.)
# A tibble: 5,873 x 2
AF. AU.
<chr> <chr>
1 MIT Duflo, Esther
2 NBER Freeman, Richard B.
3 NBER Gelber, Alexander M.
4 U MI Bound, John
5 U MI Lovenheim, Michael F.
6 U MI Turner, Sarah
7 Cornell U Bound, John
8 Cornell U Lovenheim, Michael F.
9 Cornell U Turner, Sarah
10 U VA Bound, John
# … with 5,863 more rows