"Index Match" 在 R Studio 中(多列)
"Index Match" in R Studio (Multiple columns)
我正在处理一个相当大的数据集(10 万行)并想在 R Studio 中复制 Excel 索引匹配函数。
我正在寻找一种方法来创建一个新列,如果来自三个不同列的 3 个值与来自其他 3 个列的 3 个值相匹配,它将从现有列中提取一个值。
具体来说,对于下面的示例,我希望创建一个新列“1994_Number”,如果 all[=23,它会从“1995_Number”中提取值=] 三列 '1994_Address'、'1994_ZipCode' 和 '1994_Bank Name' 匹配 '1995_Address'、'1995_ZipCode' 和 '1995_Bank名称'。所需结果为红色。
Example
如有任何帮助,我们将不胜感激。
dplyr
问题的可能解决方案:
library(dplyr)
dat <- data.frame(`1994_Adress` = c("123 Road", "123 Road", "321 Road"),
`1994_ZipCode` = c(99999, 99999, 11111),
`1994_Bank Name` = c("JPM", "JPM", "WF"),
`1995_Adress` = c("123 Road", "1234 Road", "321 Road"),
`1995_ZipCode` = c(99999, 99999, 11111),
`1995_Bank Name` = c("JPM", "JPM", "WF"),
`1995_Number` = c(1, 2, 3), check.names = F, stringsAsFactors = F)
dat <- dat %>%
mutate(`1994_Number` = case_when(`1994_Adress` == `1995_Adress` &
`1994_ZipCode` == `1995_ZipCode` &
`1994_Bank Name` == `1995_Bank Name` ~ `1995_Number`))
我正在处理一个相当大的数据集(10 万行)并想在 R Studio 中复制 Excel 索引匹配函数。
我正在寻找一种方法来创建一个新列,如果来自三个不同列的 3 个值与来自其他 3 个列的 3 个值相匹配,它将从现有列中提取一个值。
具体来说,对于下面的示例,我希望创建一个新列“1994_Number”,如果 all[=23,它会从“1995_Number”中提取值=] 三列 '1994_Address'、'1994_ZipCode' 和 '1994_Bank Name' 匹配 '1995_Address'、'1995_ZipCode' 和 '1995_Bank名称'。所需结果为红色。
Example
如有任何帮助,我们将不胜感激。
dplyr
问题的可能解决方案:
library(dplyr)
dat <- data.frame(`1994_Adress` = c("123 Road", "123 Road", "321 Road"),
`1994_ZipCode` = c(99999, 99999, 11111),
`1994_Bank Name` = c("JPM", "JPM", "WF"),
`1995_Adress` = c("123 Road", "1234 Road", "321 Road"),
`1995_ZipCode` = c(99999, 99999, 11111),
`1995_Bank Name` = c("JPM", "JPM", "WF"),
`1995_Number` = c(1, 2, 3), check.names = F, stringsAsFactors = F)
dat <- dat %>%
mutate(`1994_Number` = case_when(`1994_Adress` == `1995_Adress` &
`1994_ZipCode` == `1995_ZipCode` &
`1994_Bank Name` == `1995_Bank Name` ~ `1995_Number`))