【发布时间】:2020-04-12 21:54:35
【问题描述】:
我正在尝试使用 R 的匹配功能保留系列的第一行,然后将其应用于原始数据框,以便我只收集满足第一个条件的行。我将对新列中的这些重复值进行计算和逻辑测试,但是在获得正确的匹配索引然后将它们应用于原始数据框之后,我得到了一个完全混合的结果,而不是我的第一个值应该包含在其相应的行中。
# Extract first row's value
DT1 <- InsiderList3[!duplicated(`Insider CIK`), ]
# Construct Index for Each Grouping (Insider CIK) most recent reported transaction date
index2 <- match(as.character(InsiderList3$`Insider CIK`),as.character(DT1$`Insider CIK`))
dt3 <- InsiderList3[as.numeric(index2),]
这是一个示例输入:
dput(head(InsiderList3[c('Insider CIK', 'Transaction Date', 'Issuer')], 75))
structure(list(`Insider CIK` = c("0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001008134", "0001008134",
"0001008134", "0001008134", "0001008134", "0001009891", "0001012859",
"0001012859", "0001012859", "0001012859"), `Transaction Date` = structure(c(18358,
18358, 18101, 18065, 18065, 18039, 17729, 17700, 17674, 17674,
17345, 17345, 17326, 17014, 17014, 17014, 17014, 17014, 17014,
17001, 16964, 16964, 16598, 16590, 16582, 16582, 16409, 16288,
16288, 16245, 16245, 16217, 16161, 16072, 16052, 15967, 15880,
15869, 15771, 15710, 15710, 15687, 15603, 15523, 15354, 15354,
15030, 14979, 14840, 14049, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 18358, 18358,
18358, 18261), class = "Date"), Issuer = c("TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"SANDRIDGE ENERGY INC", "SANDRIDGE ENERGY INC", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "Seventy Seven Energy Inc.",
"Seventy Seven Energy Inc.", "Seventy Seven Energy Inc.", "Seventy Seven Energy Inc.",
"Seventy Seven Energy Inc.", "Seventy Seven Energy Inc.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "Seventy Seven Energy Inc.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"Seventy Seven Energy Inc.", "Seventy Seven Energy Inc.", "Seventy Seven Energy Inc.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP",
"CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP", "TRANSATLANTIC PETROLEUM LTD.",
"CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP",
"CHESAPEAKE ENERGY CORP", "TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "TRANSATLANTIC PETROLEUM LTD.",
"TRANSATLANTIC PETROLEUM LTD.", "QUEST RESOURCE CORP", "QUEST RESOURCE CORP",
"CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP",
"CHESAPEAKE ENERGY CORP", "CHESAPEAKE ENERGY CORP", "TRANSATLANTIC PETROLEUM LTD.",
"CHESAPEAKE ENERGY CORP", "Seventy Seven Energy Inc.", "CHESAPEAKE OILFIELD OPERATING LLC",
"TRANSATLANTIC PETROLEUM LTD.", "QUEST RESOURCE CORP", "CHESAPEAKE ENERGY CORP",
"CHESAPEAKE ENERGY CORP", "CVR ENERGY INC", "CHESAPEAKE ENERGY CORP",
"SANDRIDGE ENERGY INC", "TRANSATLANTIC PETROLEUM LTD.", "Seventy Seven Energy Inc.",
"CHESAPEAKE ENERGY CORP", NA, "NATIONAL HEALTHCARE CORP", "NATIONAL HEALTHCARE CORP",
"NATIONAL HEALTHCARE CORP", "NATIONAL HEALTHCARE CORP")), row.names = c(NA,
75L), class = "data.frame")
非常感谢您的帮助。
【问题讨论】:
-
你能显示你的预期输出吗
-
我想要的输出将是一个与我开始时尺寸完全相同的数据框,但只包含每个组 ID 的第一行值。它是一个大型数据框,但我很乐意为您提供所需的任何东西。我从来没有遇到过这样的索引问题。我已经确认索引向量是一个数字。
-
你需要反向的
match吗 -
即
match(as.character(DT1$Insider CIK), as.character(InsiderList3$Insider CIK) )# [1] 1 71 72 -
所以点 71 是正确的,就下一个匹配出现在 maint 表中的位置而言。在这种情况下,它应该保持原样,但按照我这样做的方式,我让初始匹配显示在第 160 行,然后它跳过第 71 行的匹配并进入下一个。我不明白为什么。