微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何消除 R 中某些值相交的重复值?

如何解决如何消除 R 中某些值相交的重复值?

这是 2005-2015 年国家间面板数据。

安排如下。

年 iso_i 行业 iso_j thetaij

2005 ARG D01T03 AUS 0

2005 澳大利亚 D01T03 ARG 0

年份和行业相同的两行,Iso_i和Iso_j相交。 我想将这两行视为重复行,只留下一行。

如果按照这个标准去掉,就只剩下总行数的一半了。

我想出了如何使用 Excel 宏文件进行操作,但面板数据中的总行数为 480,000,并且在 Excel 中不起作用...

我想我必须在 R 上做。 你能告诉我解决方案吗?

解决方法

据我所知,您并不关心这些重复行中的最后两列是否不同。如果是这种情况,这将起作用(只需将 df 更改为您的数据框的名称):

library(dplyr)
id <- which(duplicated(select(df,year,iso_i,industry))
length(id) # check number of duplicates
df<- df[-id,]
,

建议创建一个按字母顺序粘贴 iso_i 和 iso_j 字段的新列。这就是带有 mutateif_else 正在做的事情。分组 (group_by) 将消除重复行。 summarise 保留原始数据,假设它们与您所说的相同(所以只取第一个元素):


dt <- tibble(year = c(2005,2005),iso_i = c("ARG","AUS"),industry = c("D01T03","D01T03"),iso_j = c("AUS","ARG"),thetai_j = c(0,0))
  
dt <- dt %>% 
  mutate(iso_ij = if_else(iso_i > iso_j,paste0(iso_j,sep = " "),paste0(iso_i,iso_j,sep = " "))) %>% 
  group_by(year,industry,iso_ij) %>% 
  summarise(thetai_j = first(thetai_j),iso_i = first(iso_i),iso_j = first(iso_j)) %>% 
  select(year,thetai_j)

(dt)         

最后的 select 命令是以相同的顺序保存信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。