如何基于R

问题描述

我被困在这里,并认为我使这个问题复杂化了...

我试图通过在由“,”分隔的县列表中检测到“数字”来对分类变量“县”进行求和。

有没有办法在base和/或dplyr中执行此操作?我尝试了str_detect和filter的一些变体,但似乎无法弄清楚。

在数据帧d1-d3中查看以下代码:

  • d1显示与每个“县”关联的“数字”
  • d2显示每个“县”列表的总和
  • d3 显示列出的每个“县”的总金额
d1 <- data.frame(County =  c("a","b","c","d"),Number = c(1000,2000,3000,4000))
d1

  County Number
1      a   1000
2      b   2000
3      c   3000
4      d   4000

d2 <- data.frame(County =  c("a,b","b,c","d,a","a,c,d,b"))

d2

 County
1   a,b
2   b,c
3      c
4   d,a
5   a,b


d3 <- 

d3 

County           Total 
1   a,b         3000
2   b,c         5000
3      c         3000
4   d,a         5000
5   a,b   10000

解决方法

做任何一个

BaseR

d2$Total <- Map(f= function(x) sum(d1$Number[match(x,d1$County)]),strsplit(d2$County,","))

> d2
      County Total
1       a,b  3000
2       b,c  5000
3          c  3000
4       d,a  5000
5 a,c,d,b 10000

tidyverse

library(tidyverse)
d2 %>% mutate(Total = map(str_split(County,"),~ sum(d1$Number[match(.x,d1$County)])))

      County Total
1       a,b 10000

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...