【问题标题】:R - Need to extract two dataset but getting error "Error in fix.by(by.y, y)"R - 需要提取两个数据集但出现错误“fix.by(by.y, y) 中的错误”
【发布时间】:2015-03-25 11:56:26
【问题描述】:

我正在尝试合并两个数据集

  1. se_lif_1 与列 SE_NOTOT_CV_LIF
  2. ext_merchant_account 的 76 列包括:

    "SE_NO","SEIMS_INDUS_DS_CD","CUR_MER_STA_CD","CLNT_MAN_CHAN_CD","MER_SETUP_DT"

使用以下代码:

se_lif_2 <- merge(se_lif_1,
     ext_merchant_account[(ext_merchant_account$CUR_MER_STA_CD %in%
     c("A","R")) & (ext_merchant_account$CLNT_MAN_CHAN_CD %in% 
     c("I","X", " ")) & (ext_merchant_account$MER_SETUP_DT < 
     S_date),"SEIMS_INDUS_DS_CD"],by = "SE_NO" )

但出现以下错误:

"Error in fix.by(by.y, y) : 'by' must specify a uniquely valid column"

另外,S_date 是一个具有“日期”类的对象,其中包含一条记录,我在其中一个逻辑条件下使用它来对来自ext_merchant_account 数据帧的数据进行子集化。

我还检查了“by”中变量的类,这对于两个数据集都是相同的(即整数)。

我也尝试过使用by.xby.y,但又遇到了同样的错误。谁能指出我在这段代码中所做的错误。

提前感谢您的帮助。

干杯,

阿米特

【问题讨论】:

  • 请展示一个可重现的例子stackoverflow.com/questions/5963269/…
  • ext_merchant_account[(ext_merchant_account$CUR_MER_STA_CD %in% c("A","R")) &amp; (ext_merchant_account$CLNT_MAN_CHAN_CD %in% c("I","X", " ")) &amp; (ext_merchant_account$MER_SETUP_DT &lt; S_date),"SEIMS_INDUS_DS_CD"] 的输出中是否有 SE_NO 列。光看代码,好像只有"SEIMS_INDUS_DS_CD"这个列。
  • 如果两列代表相同的“SE_NO”,我认为您可以使用by.x='SE_NO', by.y='SEIMS_INDUS_DS_CD)
  • 是的,但即使在选择所有列后也会出现相同的错误
  • 这只是一个猜测。如果没有两个数据集的示例数据或 str(),很难说你的代码可能有什么问题

标签: r


【解决方案1】:

我的猜测是您未能在代码中选择 SE_MO。要使用merge,两个数据框需要共享一个公共变量。很可能是缺少一个数据框SE_MO

合并代码应如下所示:

newDF=merge(df1,df2,by=SE_MO)

要重命名您可能想要使用的变量:

names(df1)[1]=c("SE_MO") #'1' refers to location of column

【讨论】:

  • 但即使从数据集 "ext_merchant_account" 中选择所有列时也会出现相同的错误,很快就会共享表结构和示例数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多