- 在R中使用循环条件合并数据的问题**
我有一个48134个独特观察结果的主要数据集,共有35个变量(2015 - 2020年的手术人群)。一个是LopNr,它是唯一的病例标识符,另外两个是OPERATION_START(POSIXct % d %B %Y:%H:%M:%S)和YearOfSurgery(character),它们都包括患者接受手术的年份。
我现在想包括其他的社会经济数据,我已经存储为六个单独的csv文件,每个包含年份一个。我想根据每个病例接受手术的年份添加SES数据。例如,如果在2015年进行手术,则从2015 csv文件中提取数据。我还希望我添加的变量被视为一个变量,即使var1可以根据手术年份从六个csv文件中的任何一个中提取。
我正在使用tidyverse,我尝试的最后一个循环如下所示(Raks_SummaInk是我想要提取的变量之一):
#TEST OF LOOP 230523 08:24
years <- c(2015, 2016, 2017, 2018, 2019, 2020)
HIP2_SPOR_SES <- HIP2_SPOR # Create a new dataset to store the merged data (basically a copy of HIP2_SPOR)
for (year in years) {
csv_file <- paste0("MC_Lev_LISA_", year, ".csv")
socioeco_data <- read_csv(csv_file) %>%
select(Lopnr, Raks_SummaInk)
merged_data <- HIP2_SPOR_SES %>%
filter(YearOfSurgery == as.character(year)) %>%
left_join(socioeco_data, by = c("LopNr" = "Lopnr")) %>%
summarize(Raks_SummaInk = sum(Raks_SummaInk, na.rm = TRUE))
HIP2_SPOR_SES <- merge(HIP2_SPOR_SES, merged_data, all = TRUE) # Merge the new data with the existing dataset
}
这导致了一个新的数据集HIP2_SPOR_SES,其中包含45个变量,所有新的变量都名为Raks_SummaInk,但后缀不同,不幸的是只有NAs。
1条答案
按热度按时间velaa5lx1#
利用
Map
ping和Reduce
ing的一种方法: