Splitting individual lines of data into multiple lines
I have a dataset with 3k co-authors. I have columns with Sender and Recipient (or source and target) and column Name of journal and Year of publication.If some authors have more than one shared article, the results will be comma separated on one line. What I want to do is split these lines into multiple lines. data.frame is my GitHub repository
For example:
HALL M,DE JONG GF, "['GRAEFE DR 2008 INTERNATIONAL MIGRATION REVIEW', 'HALL M 2010 SOCIAL SCIENCE RESEARCH']"
I need to split the last column like this:
HALL M,DE JONG GF, GRAEFE DR 2008 INTERNATIONAL MIGRATION REVIEW
HALL M,DE JONG GF, HALL M 2010 SOCIAL SCIENCE RESEARCH
I heard that I need to write a simple loop in R, but I have no idea how it should look like.
CORRECT dput my data, the first 20 lines:
> dput(head(temp,n=20))
structure(list(Source = c("HUMPHREY CR", "HUMPHREY CR", "HUMPHREY CR",
"SELL RR", "SELL RR", "SELL RR", "GARDNER RW", "GARDNER RW",
"GARDNER RW", "GARDNER RW", "GARDNER RW", "GARDNER RW", "GARDNER RW",
"GARDNER RW", "FAWCETT JT", "FAWCETT JT", "FAWCETT JT", "FAWCETT JT",
"FAWCETT JT", "FAWCETT JT"), Target = c("SELL RR", "GILLASPY RT",
"KROUT JA", "GILLASPY RT", "KROUT JA", "DEJONG GF", "FAWCETT JT",
"ARNOLD F", "CARINO BV", "ROOT BD", "DEJONG G", "ABAD RG", "DEJONG GF",
"BOUVIER LF", "ARNOLD F", "PARK IH", "CARINO BV", "ROOT BD",
"DEJONG G", "ABAD RG"), Type = c("Undirected", "Undirected",
"Undirected", "Undirected", "Undirected", "Undirected", "Undirected",
"Undirected", "Undirected", "Undirected", "Undirected", "Undirected",
"Undirected", "Undirected", "Undirected", "Undirected", "Undirected",
"Undirected", "Undirected", "Undirected"), Id = c(2386L, 2385L,
2384L, 3635L, 3634L, 3636L, 401L, 397L, 398L, 399L, 403L, 396L,
400L, 402L, 598L, 602L, 601L, 604L, 605L, 597L), Label = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA), Weight = c(1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 1, 2, 2,
1, 3, 1, 2, 1, 1, 2), ayjid = c("['HUMPHREY CR 1977 RURAL SOCIOLOGY']",
"['HUMPHREY CR 1977 RURAL SOCIOLOGY']", "['HUMPHREY CR 1977 RURAL SOCIOLOGY']",
"['HUMPHREY CR 1977 RURAL SOCIOLOGY']", "['HUMPHREY CR 1977 RURAL SOCIOLOGY']",
"['SELL RR 1978 JOURNAL OF POPULATION']", "['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'DEJONG G 1986 POPULATION AND ENVIRONMENT', 'FAWCETT JT 1994 POPULATION AND ENVIRONMENT']",
"['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'GARDNER RW 1986 POPULATION AND ENVIRONMENT']",
"['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'GARDNER RW 1986 POPULATION AND ENVIRONMENT']",
"['DEJONG G 1986 POPULATION AND ENVIRONMENT']", "['DEJONG G 1986 POPULATION AND ENVIRONMENT']",
"['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'DEJONG G 1986 POPULATION AND ENVIRONMENT']",
"['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'GARDNER RW 1986 POPULATION AND ENVIRONMENT']",
"['BOUVIER LF 1986 POPULATION BULLETIN']", "['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'ARNOLD F 1989 INTERNATIONAL MIGRATION REVIEW', 'FAWCETT JT 1987 INTERNATIONAL MIGRATION REVIEW']",
"['ARNOLD F 1989 INTERNATIONAL MIGRATION REVIEW']", "['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'ARNOLD F 1989 INTERNATIONAL MIGRATION REVIEW']",
"['DEJONG G 1986 POPULATION AND ENVIRONMENT']", "['DEJONG G 1986 POPULATION AND ENVIRONMENT']",
"['DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW', 'DEJONG G 1986 POPULATION AND ENVIRONMENT']"
)), .Names = c("Source", "Target", "Type", "Id", "Label", "Weight",
"ayjid"), row.names = c(NA, 20L), class = "data.frame")
source to share
It's pretty simple with cSplit
from my splitstackshape package:
library(splitstackshape)
cSplit(as.data.table(temp)[, ayjid := gsub("[][]", "", ayjid)],
"ayjid", ",", "long")
# Source Target Type Id Label Weight ayjid
# 1: HUMPHREY CR SELL RR Undirected 2386 NA 1 'HUMPHREY CR 1977 RURAL SOCIOLOGY'
# 2: HUMPHREY CR GILLASPY RT Undirected 2385 NA 1 'HUMPHREY CR 1977 RURAL SOCIOLOGY'
# 3: HUMPHREY CR KROUT JA Undirected 2384 NA 1 'HUMPHREY CR 1977 RURAL SOCIOLOGY'
# 4: SELL RR GILLASPY RT Undirected 3635 NA 1 'HUMPHREY CR 1977 RURAL SOCIOLOGY'
# 5: SELL RR KROUT JA Undirected 3634 NA 1 'HUMPHREY CR 1977 RURAL SOCIOLOGY'
# 6: SELL RR DEJONG GF Undirected 3636 NA 1 'SELL RR 1978 JOURNAL OF POPULATION'
# 7: GARDNER RW FAWCETT JT Undirected 401 NA 3 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 8: GARDNER RW FAWCETT JT Undirected 401 NA 3 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# 9: GARDNER RW FAWCETT JT Undirected 401 NA 3 'FAWCETT JT 1994 POPULATION AND ENVIRONMENT'
# 10: GARDNER RW ARNOLD F Undirected 397 NA 2 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 11: GARDNER RW ARNOLD F Undirected 397 NA 2 'GARDNER RW 1986 POPULATION AND ENVIRONMENT'
# 12: GARDNER RW CARINO BV Undirected 398 NA 2 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 13: GARDNER RW CARINO BV Undirected 398 NA 2 'GARDNER RW 1986 POPULATION AND ENVIRONMENT'
# 14: GARDNER RW ROOT BD Undirected 399 NA 1 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# 15: GARDNER RW DEJONG G Undirected 403 NA 1 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# 16: GARDNER RW ABAD RG Undirected 396 NA 2 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 17: GARDNER RW ABAD RG Undirected 396 NA 2 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# 18: GARDNER RW DEJONG GF Undirected 400 NA 2 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 19: GARDNER RW DEJONG GF Undirected 400 NA 2 'GARDNER RW 1986 POPULATION AND ENVIRONMENT'
# 20: GARDNER RW BOUVIER LF Undirected 402 NA 1 'BOUVIER LF 1986 POPULATION BULLETIN'
# 21: FAWCETT JT ARNOLD F Undirected 598 NA 3 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 22: FAWCETT JT ARNOLD F Undirected 598 NA 3 'ARNOLD F 1989 INTERNATIONAL MIGRATION REVIEW'
# 23: FAWCETT JT ARNOLD F Undirected 598 NA 3 'FAWCETT JT 1987 INTERNATIONAL MIGRATION REVIEW'
# 24: FAWCETT JT PARK IH Undirected 602 NA 1 'ARNOLD F 1989 INTERNATIONAL MIGRATION REVIEW'
# 25: FAWCETT JT CARINO BV Undirected 601 NA 2 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 26: FAWCETT JT CARINO BV Undirected 601 NA 2 'ARNOLD F 1989 INTERNATIONAL MIGRATION REVIEW'
# 27: FAWCETT JT ROOT BD Undirected 604 NA 1 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# 28: FAWCETT JT DEJONG G Undirected 605 NA 1 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# 29: FAWCETT JT ABAD RG Undirected 597 NA 2 'DEJONG GF 1983 INTERNATIONAL MIGRATION REVIEW'
# 30: FAWCETT JT ABAD RG Undirected 597 NA 2 'DEJONG G 1986 POPULATION AND ENVIRONMENT'
# Source Target Type Id Label Weight ayjid
You can use ayjid := gsub("[][']", "", ayjid)]
if you also want to get rid of the quotes in the resulting column.
source to share