【问题标题】:matching every row of a dataset against all rows of a second dataset iteratively迭代地将数据集的每一行与第二个数据集的所有行匹配
【发布时间】:2020-12-18 09:24:38
【问题描述】:

我有两个数据集,分别命名为 E 和 eF。

E<-dput(A%>%head(n=6) %>% select(Inception_Date,Name))        
structure(list(Inception_Date = structure(c(962323200, 962323200, 
810950400, 988675200, 1042502400, 1536624000), tzone = "UTC", class =  
c("POSIXct","POSIXt")), Name = c("Calvert Social Index B", "Calvert US   
Large Cap Core Rspnb Idx A", "Green Century Equity Individual 
Investor", "Praxis Value Index A", "Vanguard FTSE Social Index I", 
"Amundi IS Amundi MSCI USA SRI ETF DR")), row.names = c(NA, -6L), 
class = c("tbl_df", "tbl", "data.frame"
))

eF<-dput(B%>%head(n=8) %>% select(Inception_Date,Name))
structure(list(Inception_Date = structure(c(760233600, 519868800, 
1380067200, 1101772800, 1325203200, 628473600, 1325203200, 1123804800
), tzone = "UTC", class = c("POSIXct", "POSIXt")), Name = c("Amana     
Growth Investor", "Amana Income Investor", "Amana Income   
Institutional", "American Century Sustainable Equity A", 
"Ariel Appreciation Institutional", "Ariel Appreciation Investor", 
"Ariel Focus Institutional", "Baywood Socially Responsible Invs"
)), row.names = c(NA, -8L), class = c("tbl_df", "tbl", "data.frame"
))

如果日期之间的差异在 -1500 天和 +1500 天之间,例如,如果日期差异在 + 或 - 1500 之间,我需要将 eF 的每个初始日期减去 E 的第一个初始日期天,我将选择它们,并为满足条件的日期数据制作一个数据集。

但是我需要然后将eF的每个日期减去E的第二个日期,并使用相同的标准根据相同的标准进行选择,然后创建一个新文件。

然后我需要在 E 的第 3、4 个日期等之前减去每个 eF 的数字,然后匹配,根据相同的标准选择它们。

我应该有 8 个输出 .csv 文件

我使用了以下代码,请您帮我调试一下好吗?

for (k in 1:nrow(E)) {
F_temp <- eF;
G_temp <- F_temp %>% filter(abs(F_temp$Inception_Date-    
E$Inception_Date[k]) <= 1500);
print(G_temp)}
for(i in 1:nrow(G_temp)){
write.csv(G_temp, paste0("test", i, ".csv"), row.names = TRUE)
}

谢谢!

【问题讨论】:

  • 您介意分享一些数据吗?然后我们可以重现错误,更容易为您提供帮助。
  • 如何发送excel文件?谢谢! @yannik Suhre
  • 我不知道如何发送 excel 文件。但是如果我们在文件 A 中有 5 个日期,在文件 B 中有 5 个日期,每次我需要找到文件 B 中的所有日期与文件 A 中的一行的差异。然后我需要找到所有行的日期差异第二,第三,第四行,迭代。
  • 只需执行dput(head(A)) 并将控制台中的数据添加到您的问题中。
  • 请使用dput 添加数据并显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example

标签: r loops debugging apply tidyverse


【解决方案1】:

所以,我猜您正在寻找的是以下内容:

A <- c(7,6,5,4,3,6,0,8,19,42,-4,59)
B <- c(9,-10, 8, 4,-2,6,7,9,18)

C <- as.data.frame(sapply(B, `-`, A))

此命令 (sapply()) 将返回一个矩阵(我使用 as.data.frame 将其转换为一个 data.frame),其中每一行表示从 B 中减去一个元素对于 A 的整个向量。

【讨论】:

  • 我不知道SO是否有聊天功能,但请继续。但是,如果您还有其他问题,请更新您的问题。而且,如果对您有帮助,请接受我的回答! ;)
  • 嗨 Yannik,我已将我的问题修改为更具体。谢谢@Yannik Suhre
猜你喜欢
  • 1970-01-01
  • 2021-11-21
  • 2020-05-30
  • 2016-10-18
  • 2020-10-09
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多