【发布时间】:2018-01-02 13:42:07
【问题描述】:
library(tidyverse)
下面提供的代码创建了三个数据帧 - Main、LookUp 和 Final。我正在尝试使用 Main 和 LookUp 数据框来创建最终数据框。
例如,Final 表只保留具有 LookUp 表 Section_Lookup 中提供的编号的“Sections”,同时还保留了相应的“Title”变量。
我想尽可能多地使用 tidyverse。我的大部分尝试都是按照下面的代码进行的。我在想,使用两个循环或 purrr 将允许我遍历 Main 和 LookUp 表。这比我通常尝试的更先进,所以我想要一些关于如何继续和处理这种情况的帮助。
New<-map(Main, function(x) {
map(LookUp, function(y) if_else(x$Title1==y$Title_Lookup & ...x$Section1 CONTAINS Y SECTION_LOOKUP... ) )}),
示例代码如下:
主数据框:
Title1<-c("101A", "101A", "101A", "101A", "101A", "101A", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "203S", "400B", "400B", "400B", "400B", "200A", "200A", "250D", "250D", "250D", "250D")
Section1<-c("2A", "2A", "2B", "2B", "2B", "2C", "2A", "2A", "4A", "4A", "4A", "4B", "4B", "4C", "4C", "4C", "4C", "4D", "4D", "2A", "2A", "2B", "2B", "2A", "6A", "1A", "1B", "2A", "2A")
Main<-data_frame(Title1,Section1)
查找表:
Title_Lookup<-c("101A", "203S", "203S", "400B", "200A", "200A", "250D")
Section_Lookup<-c(2, 2, 4, 2, 2, 6, 2)
LookUp<-data_frame(Title_Lookup,Section_Lookup)
最终数据框:
Section_Final<-c("2A", "2B", "2C", "2A", "4A", "4B", "4C", "4D", "2A", "2B", "2A", "6A", "2A")
Title_Final<-c("101A", "101A", "101A", "203S", "203S", "203S", "203S", "203S", "400B", "400B", "200A", "200A", "250D")
Final<-data_frame(Title_Final,Section_Final)
【问题讨论】:
-
这听起来像是一个先对关键列进行一点清理的连接,但结果似乎是选择每个部分的逻辑让我无法理解
-
当主数据框只有 1 行 Name1 / 101A 时,输出数据如何有 3 行 Name1 / 101A?
-
我简化了示例,所以现在只有“标题”和“部分”列。我为过于复杂而道歉。希望你能再看看,仍然帮助我......
-
我正在根据您之前的示例开发一个答案。现在我的答案看起来“错误”,因为您更改了示例数据集。我稍后会更新我的答案,但以后请避免这种情况。
-
MKR,dplyr 很好! Dplyr 是 tidyverse 的一部分 - 所以 dplyr、tidyr、purrr 等都是我想要的……所以请继续使用 dplyr。