У меня есть 2 кадра данных, первый столбец одного из них - это список (df A), первый столбец другого содержит элементы из списка, но в некоторых случаях каждая строка имеет несколько элементов (df B). То, что я хочу сделать, это пройти и создавать новые строки для каждого элемента из ДФ А, что происходит в первой колонке ДФ В.Создайте новые строки фрейма данных на основе столбца из другого фрейма данных
DF
dfA
Index X
1 1 alpha
2 2 beta
3 3 gamma
4 4 delta
DF B
dfB
list X
1 1 4 alpha
2 3 2 1 beta
3 4 1 2 gamma
4 3 delta
Желаемая
dfC
Index x
1 1 alpha
2 4 alpha
3 3 beta
4 2 beta
5 1 beta
6 4 gamma
7 1 gamma
8 2 gamma
9 3 delta
фактические данные я использую: DF
dput(head(allwines))
structure(list(Wine = c("Albariño", "Aligoté", "Amarone", "Arneis",
"Asti Spumante", "Auslese"), Description = c("Spanish white wine grape that makes crisp, refreshing, and light-bodied wines.",
"White wine grape grown in Burgundy making medium-bodied, crisp, dry wines with spicy character.",
"From Italy’s Veneto Region a strong, dry, long- lived red, made from a blend of partially dried red grapes.",
"A light-bodied dry wine the Piedmont Region of Italy", "From the Piedmont Region of Italy, A semidry sparkling wine produced from the Moscato di Canelli grape in the village of Asti",
"German white wine from grapes that are very ripe and thus high in sugar"
)), .Names = c("Wine", "Description"), row.names = c(NA, 6L), class = "data.frame")
DF B
> dput(head(cheesePairing))
structure(list(Wine = c("Cabernet Sauvignon\r\n \r\n \r\n \r\n \r\n \r\n Pinot Noir\r\n \r\n \r\n \r\n \r\n \r\n Sauvignon Blanc\r\n \r\n \r\n \r\n \r\n \r\n Zinfandel",
"Chianti\r\n \r\n \r\n \r\n \r\n \r\n Pinot Noir\r\n \r\n \r\n \r\n \r\n \r\n Sangiovese",
"Chardonnay", "Bardolino\r\n \r\n \r\n \r\n \r\n \r\n Malbec\r\n \r\n \r\n \r\n \r\n \r\n Riesling\r\n \r\n \r\n \r\n \r\n \r\n Rioja\r\n \r\n \r\n \r\n \r\n \r\n Sauvignon Blanc",
"Tempranillo", "Asti Spumante"), Cheese = c("Abbaye De Belloc Cheese",
"Ardrahan cheese", "Asadero cheese", "Asiago cheese", "Azeitao",
"Baby Swiss Cheese"), Suggestions = c("Pair with apples, sliced pears OR a sampling of olives and thin sliced salami. Pass around slices of baguette.",
"Serve with a substantial wheat cracker and apples or grapes.",
"Rajas (blistered chile strips) fresh corn tortillas", "Table water crackers, raw nuts (almond, walnuts)",
"Nutty brown bread, grapes", "Server with dried fruits, whole grain, nutty breads, nuts"
)), .Names = c("Wine", "Cheese", "Suggestions"), row.names = c(NA,
6L), class = "data.frame")
Было бы полезно, если бы вы могли отредактировать свой вопрос, включив данные примера в формат R-parseable. Например. 'dput (dfA)' и 'dput (dfB)'. –
@CurtF. Я добавил свои данные примера, я был обеспокоен тем, что это может быть слишком запутанным, поэтому я удалил его и поставил приведенный пример. –
Я не уверен, что использовать для 'DFA'. у вин DFB есть куча лишних пробелов, поэтому вы можете использовать это для запятой 'cheesePairing $ Wine <- gsub ('\\ s {2,}', ',', df $ Wine)' и теперь используйте один из ответов в [этом вопросе] (http://stackoverflow.com/questions/28285169/split-comma-separated-column-entry-into-rows) или другие аналогичные – rawr