首页 > 解决方案 > 如何修复“错误:matrix/data.frame 标准应该是合乎逻辑的。”

问题描述

我找不到

错误:matrix/data.frame 标准应该是合乎逻辑的。

在我的代码中。

#count prod_no downward
consoContact2$Count <- as.numeric("")
for (xNo in 1:nrow(consoContact2)){
  consoContact2$Count[xNo] <- count_if(consoContact2[xNo,1],consoContact2[1:xNo,1])
}

数据样本:

    Prod_No         Order_No    Reff_ID                       Count
1   03MB1902-118    920522XXXX  03MB1902-118'A**0920522XXXX NA
2   03MB1902-118    33333XXXX   03MB1902-118'C**033333XXXX  NA
3   07MB1902-105    922977XXXX  07MB1902-105'A**0922977XXXX NA
4   07MB1902-105    32231XXXX   07MB1902-105'C**032231XXXX  NA
5   07MB1902-105    32268XXXX   07MB1902-105'C**032268XXXX  NA

这些必须是输出:

    Prod_No         Order_No    Reff_ID                       Count
1   03MB1902-118    920522XXXX  03MB1902-118'A**0920522XXXX 1
2   03MB1902-118    33333XXXX   03MB1902-118'C**033333XXXX  2
3   07MB1902-105    922977XXXX  07MB1902-105'A**0922977XXXX 1
4   07MB1902-105    32231XXXX   07MB1902-105'C**032231XXXX  2
5   07MB1902-105    32268XXXX   07MB1902-105'C**032268XXXX  3

标签: rdataframecountif

解决方案


使用几种解决方案可以更简单地解决这个问题,其中一些在此处说明。因此,这是一个重复的问题。但是,这些不使用data.table包,因此我将在此处提供使用此包的示例。有关更多信息,请在此处查看他们的 wiki 页面。此外,您的数据的最后一列似乎是合乎逻辑的,应将其更改为数字

library(data.table)
#Change from data.frame to data.table
setDT(data_sample)
#set count to be numeric
data_sample[, Count := as.integer(Count)]
#Change count to be the format needed.
data_sample[, Count := seq(1,.N), by = Prod_No]

推荐阅读