草庐IT

关于 r:每个用户最频繁出现的大小

codeneng 2023-03-28 原文

Most frequent occurance size per user

不幸的是,我还有一个问题我无法单独解决 - 我想列出每个用户订购最多的尺寸。当 2 个或更多大小具有相同的出现时,它应该写一个 "-"

已经用数据表试过了,但我一直在纠结如何解决它;)

1
setDT(DB)[, `:=` (mostorderedsize = .N), by='customerID,size']

预期结果:

1
mostorderedsize = c("m","-", 42,"m","m", 42,"-","-","m","m")

数据:

1
2
3
4
5
6
DB <- data.frame(orderID  = c(1,2,3,4,5,6,7,8,9,10),    
orderDate = c("1.1.14","1.1.14","1.1.14","1.1.14","2.1.14","2.1.14","2.1.14","2.1.14","2.1.14","2.1.14"),  
itemID = c(2,3,2,5,12,4,2,3,1,5),  
size = c("m","l", 42,"xxl","m", 42, 39,"m","xl", 44),
customerID = c(1, 2, 3, 1, 1, 3, 2, 2, 1, 1),
ItemReturned = c(0, 0, 0, 1, 1, 0, 1, 0, 0, 0))

希望你能告诉我什么是错的,或者告诉我解决问题的另一种可能性。

  • 你说你想要每个用户订购最多的尺寸。我只计算 3 个客户 ID,但您的预期结果显示 10 个尺寸。你希望结果合并回来吗?
  • 是的——对于用户 1,它总是"m"; "-" 代表用户 2 和 "42" 代表用户 3: 并且最有序的大小应该写在用户的每一行


使用基础 R:

使用 tapply 遍历 customerID 组并使用 table

汇总大小

1
2
3
4
5
tmp <- with(DB, tapply(size, customerID, function(x) {
  tbl <- table(x)
  most <- which(tbl == max(tbl))
  if (length(most) > 1) return('-') else return(names(tbl)[most])
}))

然后可以用customerID列索引来广播结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DB$mostoreredsize <- tmp[DB$customerID]
DB
> DB
   orderID orderDate itemID size customerID ItemReturned mostoreredsize
1        1    1.1.14      2    m          1            0              m
2        2    1.1.14      3    l          2            0              -
3        3    1.1.14      2   42          3            0             42
4        4    1.1.14      5  xxl          1            1              m
5        5    2.1.14     12    m          1            1              m
6        6    2.1.14      4   42          3            0             42
7        7    2.1.14      2   39          2            1              -
8        8    2.1.14      3    m          2            0              -
9        9    2.1.14      1   xl          1            0              m
10      10    2.1.14      5   44          1            0              m

  • tmp 工作正常,但我对 2. 部分有问题 - 它不工作:DB$mostoreredsize <- tmp[DB$customerID]
  • 错误是什么? customerID 是整数、数字、因子...吗?
  • 客户 ID=整数,大小=因子;没有错误 - 整列是 NA
  • 当我使用我在答案中提供的代码运行您在问题中列出的 data.frame 时,我看到了正确的输出。如果你做 class(DB)class(tmp),结果是什么?您是否正在使用 data.table 代替?
  • 发现问题所在:customerId 需要是一个因素(不知道为什么,但现在它正在工作......)感谢您的帮助伙伴!

有关关于 r:每个用户最频繁出现的大小的更多相关文章

  1. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  2. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  3. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  4. ruby - RVM "ERROR: Unable to checkout branch ."单用户 - 2

    我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas

  5. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  6. ruby - 使用 rbenv 和 ruby​​-build 构建 ruby​​ 失败,出现 undefined symbol : SSLv2_method - 2

    我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby​​2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby​​-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm

  7. ruby-on-rails - Ruby 中意外的大小写行为 - 2

    我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。

  8. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  9. ruby - 改变替换的大小写 - 2

    我有以下内容:text.gsub(/(lower)(upper)/,'\1\2')我可以将\2替换为大写吗?类似于:sed-e's/\(abc\)/\U\1/'这在Ruby中可行吗? 最佳答案 查看gsub文档:str.gsub(模式){|匹配|block}→new_str在block形式中,当前匹配字符串作为参数传入,$1、$2、$`、$&、$'等变量将被适当设置。block返回的值将替换为每次调用的匹配项。"alowerupperb".gsub(/(lower)(upper)/){|s|$1+""+$2.upcase}

  10. ruby - 将n维数组的每个元素乘以Ruby中的数字 - 2

    在Ruby中,是否有一种简单的方法可以将n维数组中的每个元素乘以一个数字?这样:[1,2,3,4,5].multiplied_by2==[2,4,6,8,10]和[[1,2,3],[1,2,3]].multiplied_by2==[[2,4,6],[2,4,6]]?(很明显,我编写了multiplied_by函数以区别于*,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。谢谢! 最佳答案 它的长格式等价物是:[1,2,3,4,5].collect{|n|n*2}其实并没有那么复杂。你总是可以使你的multiply_by方法:c

随机推荐