Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定数据帧的一列中的值是否在另一列R中有多个对应值_R_Dataframe - Fatal编程技术网

确定数据帧的一列中的值是否在另一列R中有多个对应值

确定数据帧的一列中的值是否在另一列R中有多个对应值,r,dataframe,R,Dataframe,尝试对示例客户(EC)的数据框架进行一些数据分析,并试图确定从多个仓库(DC)运送到哪些客户 最终状态目标是将EC的名称与DC进行比较,并确定是否存在映射到多个DC的EC If(EC > 1 DC) { EC = num(DC) } 显然,上述内容并没有返回我的意图,我甚至不确定这是否需要一个循环。提前谢谢你的帮助 编辑: #一个tible:11 x 10 dc_id ec_id dc_ZIP ec EC_-ZIP`ZIP-ZIP`Miles`修订费率`cost_/mile 1 DC13

尝试对示例客户(EC)的数据框架进行一些数据分析,并试图确定从多个仓库(DC)运送到哪些客户

最终状态目标是将EC的名称与DC进行比较,并确定是否存在映射到多个DC的EC

If(EC > 1 DC) {
EC = num(DC)
}
显然,上述内容并没有返回我的意图,我甚至不确定这是否需要一个循环。提前谢谢你的帮助

编辑:

#一个tible:11 x 10
dc_id ec_id dc_ZIP ec
EC_-ZIP`ZIP-ZIP`Miles`修订费率`cost_/mile
1 DC13 M2980亚特兰大仓库30168 SAFEWAY奥本GROC奥本
98047  30168-98047  2587           4457          1.72
2 DC13 M29831亚特兰大仓库30168 FRED_MEYER_PV_Dgrpuyalup
98371  30168-98371  2592           4465          1.72
3 DC13 M2983亚特兰大仓库30168好市多洗衣店批发店AUSUMNER
98390  30168-98390  2589           4461          1.72
4 DC13 M2983亚特兰大仓库30168好市多华盛顿批发商
98390  30168-98390  2589           4461          1.72
5 DC13 M1989亚特兰大RDC仓库30168沃尔玛DC 7021GRANDVIEW
98930  30168-98930  2447           4487          1.83
6 DC16 M2015佛罗里达州奥兰多32803
麦肯森苏尔格北堡医学院01532 32803-01532 1244 2254
1.81
7 DC16 M20151佛罗里达州奥兰多32803俱乐部800比丘斯布里奇
01569  32803-01569  1239           2246          1.81
8 DC16 M20181佛罗里达州奥兰多市32803老年医学外科医生烧伤
01801  32803-01801  1276           2305          1.81
9 DC16 M2018佛罗里达州奥兰多市32803 DEMOULAS_SUPER_Marketsbury
01876  32803-01876  1280           2312          1.81
10 DC16 M2020佛罗里达州奥兰多32803
医学专业区0207232803-0207212692294
1.81
11 DC16 M2028佛罗里达州奥兰多市32803马克•史蒂文斯•沃恩索克特W101
02895  32803-02895  1243           2209          1.78
编辑2:

DC <- as.data.frame(dc_ec_cost$DC)
EC <- as.data.frame(dc_ec_cost$EC)
EC$occurences_in_dc <- rowSums(sapply(dc, function(col) dc_ec$EC %in% col))

DC
DC也许是这样的

library(tidyverse);
as.data.frame(lst) %>%
    group_by(EC) %>%
    mutate(nDC = n()) %>%
    filter(nDC == 1);
## A tibble: 10 x 8
## Groups:   EC [10]
#   dc_id ec_id  DC                     DC_ZIP EC           EC_ZIP Zip.Zip   nDC
#   <fct> <fct>  <fct>                  <fct>  <fct>        <fct>  <fct>   <int>
# 1 DC2   M2028  ALTA_VISTA_REGIONAL_DC 24517  MARK_STEVEN… 02896  24517-…     1
# 2 DC2   M2028  ALTA_VISTA_REGIONAL_DC 24517  MARK_STEVEN… 02895  24517-…     1
# 3 DC2   M2907  ALTA_VISTA_REGIONAL_DC 24517  RALPHS_GROC… 92507  24517-…     1
# 4 DC2   M2153  ALTA_VISTA_REGIONAL_DC 24517  OK_GROCERYP… 15205  24517-…     1
# 5 DC2   M2379  ALTA_VISTA_REGIONAL_DC 24517  CVS_DISTRIB… 37774  24517-…     1
# 6 DC2   M22740 ALTA_VISTA_REGIONAL_DC 24517  HARRIS_TEET… 28079  24517-…     1
# 7 DC2   M2907  ALTA_VISTA_REGIONAL_DC 24517  RALPHS_PARA… 90723  24517-…     1
# 8 DC2   M2153  ALTA_VISTA_REGIONAL_DC 24517  HBC_SERVICE… 15301  24517-…     1
# 9 DC2   M2379  ALTA_VISTA_REGIONAL_DC 24517  CVS_DISTRIB… 37922  24517-…     1
#10 DC2   M22740 ALTA_VISTA_REGIONAL_DC 24517  HARRIS_TEET… 27410  24517-…     1
怎么样

library(dplyr)
df %>% group_by(EC, DC) %>%
  count() %>% 
  filter(n > 1)
这是一个测试,如果
n>1
,则报告计数

set.seed(2)
df2 <- data.frame(
  EC = sample(LETTERS[1:8], 20, replace = TRUE),
  DC = sample(letters[1:8], 20, replace = TRUE)
)

df2 %>% group_by(EC, DC) %>%
  count() %>% 
  filter(n > 1)

# # A tibble: 3 x 3
# # Groups:   EC, DC [3]
#   EC    DC        n
#   <chr> <chr> <int>
# 1 A     h         2
# 2 C     b         2
# 3 D     g         3
set.seed(2)
df2%组别单位(EC、DC)%>%
计数()%>%
过滤器(n>1)
##tibble:3 x 3
##组别:欧共体、DC[3]
#EC DC n
#     
#1 A h 2
#2cb2
#三维g 3

您可以发布样本数据吗?请使用
dput(df)
的输出编辑问题。或者,如果dput(头部(df,20))的输出太大
。(
df
是您数据集的名称。)@RuiBarradas发布在上面,希望此帮助显示您是否希望将客户与发货订单匹配?dc_id和ec_id看起来有不同的形式。欧共体和DC也是如此。你能描述一下一场比赛会是什么样子吗?@DanHall从那以后,我就更倾向于用dc_id和EC名称进行比较。所以或多或少:对于Mark_Stevem来说,有多少DC与该名称匹配。有道理?通过将DC ID与实际EC名称进行匹配可能是最简单的方法。我仍然对您试图比较的内容感到困惑。DC_ID始终是DC2。实际EC名称是什么?是EC元素的值吗?您的示例中没有匹配项,而且它们的形式也不相同。我如何处理非数字数据$运算符对于原子向量无效“是尝试编写代码时收到的错误。我看到您添加了示例数据。我应该等着看结构是什么:)在我的玩具样本中,有两个数据帧,一个dc,一个ec。这些原则是适用的,但是是的,在这里,一个列是从一个数据框中提取出来的,其中包含$,如果你看到我刚才添加的代码,看起来我们就快到了。有什么想法吗?错误:nDC没有found@Franchise啊,是的,我把
n
改成了
nDC
。很抱歉,现在应该已修复,请重试。请注意,这只是一个艰难的开始;由于示例数据实际上不包含每个
EC
有多个条目的行,因此很难提供特定的解决方案。谢谢。我更新了我的代码片段以包含多个DC,请告诉我这是否有帮助。
library(tidyverse);
as.data.frame(lst) %>%
    group_by(EC) %>%
    mutate(nDC = n()) %>%
    filter(nDC == 1);
## A tibble: 10 x 8
## Groups:   EC [10]
#   dc_id ec_id  DC                     DC_ZIP EC           EC_ZIP Zip.Zip   nDC
#   <fct> <fct>  <fct>                  <fct>  <fct>        <fct>  <fct>   <int>
# 1 DC2   M2028  ALTA_VISTA_REGIONAL_DC 24517  MARK_STEVEN… 02896  24517-…     1
# 2 DC2   M2028  ALTA_VISTA_REGIONAL_DC 24517  MARK_STEVEN… 02895  24517-…     1
# 3 DC2   M2907  ALTA_VISTA_REGIONAL_DC 24517  RALPHS_GROC… 92507  24517-…     1
# 4 DC2   M2153  ALTA_VISTA_REGIONAL_DC 24517  OK_GROCERYP… 15205  24517-…     1
# 5 DC2   M2379  ALTA_VISTA_REGIONAL_DC 24517  CVS_DISTRIB… 37774  24517-…     1
# 6 DC2   M22740 ALTA_VISTA_REGIONAL_DC 24517  HARRIS_TEET… 28079  24517-…     1
# 7 DC2   M2907  ALTA_VISTA_REGIONAL_DC 24517  RALPHS_PARA… 90723  24517-…     1
# 8 DC2   M2153  ALTA_VISTA_REGIONAL_DC 24517  HBC_SERVICE… 15301  24517-…     1
# 9 DC2   M2379  ALTA_VISTA_REGIONAL_DC 24517  CVS_DISTRIB… 37922  24517-…     1
#10 DC2   M22740 ALTA_VISTA_REGIONAL_DC 24517  HARRIS_TEET… 27410  24517-…     1
lst <- structure(list(dc_id = c("DC2", "DC2", "DC2", "DC2", "DC2", "DC2",
"DC2", "DC2", "DC2", "DC2"), ec_id = c("M2028", "M2028", "M2907",
"M2153", "M2379", "M22740", "M2907", "M2153", "M2379", "M22740"
), DC = c("ALTA_VISTA_REGIONAL_DC", "ALTA_VISTA_REGIONAL_DC",
"ALTA_VISTA_REGIONAL_DC", "ALTA_VISTA_REGIONAL_DC",
"ALTA_VISTA_REGIONAL_DC",
"ALTA_VISTA_REGIONAL_DC", "ALTA_VISTA_REGIONAL_DC",
"ALTA_VISTA_REGIONAL_DC",
"ALTA_VISTA_REGIONAL_DC", "ALTA_VISTA_REGIONAL_DC"), DC_ZIP = c("24517",
"24517", "24517", "24517", "24517", "24517", "24517", "24517",
"24517", "24517"), EC = c("MARK_STEVENS_MERCHANDISENORTH_SMITHFIE",
"MARK_STEVENS_W101WOONSOCKET", "RALPHS_GROCERYRIVERSIDE",
"OK_GROCERYPITTSBURGH",
"CVS_DISTRIBUTION_INCLOUDON", "HARRIS_TEETER_SUPERMARKEINDIAN_TRAIL",
"RALPHS_PARAMOUNT_DISTRIBPARAMOUNT", "HBC_SERVICE_COWASHINGTON",
"CVS_DISTRIBUTION_T101KNOXVILLE", "HARRIS_TEETER_SUPERMARKEGREENSBORO"
), EC_ZIP = c("02896", "02895", "92507", "15205", "37774", "28079",
"90723", "15301", "37922", "27410"), `Zip-Zip` = c("24517-02896",
"24517-02895", "24517-92507", "24517-15205", "24517-37774", "24517-28079",
"24517-90723", "24517-15301", "24517-37922", "24517-27410")))
library(dplyr)
df %>% group_by(EC, DC) %>%
  count() %>% 
  filter(n > 1)
set.seed(2)
df2 <- data.frame(
  EC = sample(LETTERS[1:8], 20, replace = TRUE),
  DC = sample(letters[1:8], 20, replace = TRUE)
)

df2 %>% group_by(EC, DC) %>%
  count() %>% 
  filter(n > 1)

# # A tibble: 3 x 3
# # Groups:   EC, DC [3]
#   EC    DC        n
#   <chr> <chr> <int>
# 1 A     h         2
# 2 C     b         2
# 3 D     g         3