r - 如何匹配同一数据框中的值?
问题描述
我的数据框如下所示:
destination origen iso3_exp Importer flow iso3_imp gdp_o gdp_d distw año
1 ABW AUT 40 533 188.782 ABW 240457629696 1320670336 8632.9708 1995
2 AUT ABW 58 533 912.362 ABW 289122615296 1320670336 7843.2555 1995
3 CHL ARG 76 533 4535.649 ABW 768951320576 1320670336 4431.5712 1995
4 ARG CHL 156 533 496.458 ABW 728007573504 1320670336 14590.9239 1995
5 AUT BEL 170 533 116442.845 ABW 92507275264 1320670336 929.5887 1995
我需要创建一个名为 totalflow 的变量,它是与 Origen-Destination 匹配的行之间的变量“flow”之和,例如:第 3 行具有到 CHL 的目的地和来自 ARG 的 Origen,第 4 行具有到 ARG 的目的地并且来自 CHL 的 origen 我需要将该行 (3) 的流与第 4 行的流相加,并对所有其他行执行相同的操作。
destination origen iso3_exp Importer flow iso3_imp gdp_o gdp_d distw año totalflow
1 ABW AUT 40 533 188.782 ABW 240457629696 1320670336 8632.9708 1995 1100
2 AUT ABW 58 533 912.362 ABW 289122615296 1320670336 7843.2555 1995 1100
3 CHL ARG 76 533 4535.649 ABW 768951320576 1320670336 4431.5712 1995 5031
4 ARG CHL 156 533 496.458 ABW 728007573504 1320670336 14590.9239 1995 5031
5 AUT BEL 170 533 116442.845 ABW 92507275264 1320670336 929.5887 1995 116442
预先感谢。
解决方案
创建一个已排序的起始值和目的地值的组列。
df$group <- with(df,paste0(pmax(destination, origen),pmin(destination, origen)))
一旦你有了,你可以按列分组并group
计算sum
。flow
#Base R
df$totalflow <- with(df, ave(flow, group, FUN = sum))
#dplyr
library(dplyr)
df %>% group_by(group) %>% mutate(total_flow =sum(flow))
#data.table
library(data.table)
setDT(df)[, totalflow := sum(flow), group]
这返回:
df
# destination origen iso3_exp Importer flow iso3_imp gdp_o
#1 ABW AUT 40 533 188.782 ABW 240457629696
#2 AUT ABW 58 533 912.362 ABW 289122615296
#3 CHL ARG 76 533 4535.649 ABW 768951320576
#4 ARG CHL 156 533 496.458 ABW 728007573504
#5 AUT BEL 170 533 116442.845 ABW 92507275264
# gdp_d distw año group totalflow
#1 1320670336 8632.9708 1995 AUTABW 1101.144
#2 1320670336 7843.2555 1995 AUTABW 1101.144
#3 1320670336 4431.5712 1995 CHLARG 5032.107
#4 1320670336 14590.9239 1995 CHLARG 5032.107
#5 1320670336 929.5887 1995 BELAUT 116442.845
group
如果不需要该列,则将其删除df$group <- NULL
。
推荐阅读
- python - 删除出现在文档根之前的处理指令和注释而不复制整个树?
- reactjs - 使用 React 和 Typescript 描述 curried 状态处理程序的类型
- python - modalPane 关闭后无法关闭 tkinter 根窗口
- c++ - 如何遍历目录并识别或省略 NTFS 连接(符号链接)
- c - 如何读取多维数组并将其存储在指针中
- svg - svg 文本路径在 Firefox 中呈现奇怪
- r - 使用 ggplot2 在异常点的多个日期时间添加垂直线
- python - 无法通过 python 从特定网站接收数据,SSL 错误
- java - Java - 执行存储过程
- monitoring - 联邦普罗米修斯中的连接丢失