r - 在 lapply 中使用 join 时如何停止复制我的数据框?
问题描述
我有四个数据框,其中包含来自四个国家的数据。每个数据框仅包含来自一个国家/地区的数据。首先,我创建了一个变量Country
,以便在我加入时知道哪些 ID 属于哪些国家/地区。
我想把四个人一起加入。当我使用所有数据帧时,问题就lapply
来了。full_join
由于我将sample_MAL
数据帧保持不变,因此每次循环时它都会在我的输出数据帧中full_join
重复。sample_MAL
我显然需要它不要那样做。由于我可以拥有多达 100 个国家/地区的数据框,因此我想要一个循环解决方案以避免必须手动完成所有操作。
#Create a data frame with each of the vendor IDs, labeled by country
IND <- tibble(rid = 1:10, PID = 1:10)
MAL <- tibble(rid = 11:24, PID = 11:24)
US <- tibble(rid = 25:41,PID = 25:41)
HK <- tibble(rid = 42:99, PID = 42:99)
#Adds the Country variable with values in each data frame
sample_IND <- IND %>% mutate(Country = "Indonesia") %>% select(PID,rid,Country)
sample_MAL <- MAL %>% mutate(Country = "Malaysia") %>% select(PID,rid,Country)
sample_HK <- HK %>% mutate(Country = "Hong Kong") %>% select(PID,rid,Country)
sample_US <- US %>% mutate(Country = "United States") %>% select(PID,rid,Country)
#Creates a list of 3 of my 4 data frames
df.list <- list(sample_IND,sample_HK,sample_US)
#Apply inner_joins across the list to the sample_MAL data frame
joined_df <- lapply(df.list, FUN = function(var){
full_join(sample_MAL,var)})
new.df <- bind_rows(joined_df)
当我summarize
查看数据时,我看到它sample_MAL
已经重复了 3 次,因为它有 42n,而它应该有 14n。
new.df %>%
group_by(Country) %>%
summarize(
n = n()
)
我知道我可以使用unique()
重复数据删除,在这种情况下效果很好,但我希望找到一种解决方案,可以在第一次正确连接所有文件。