我有一个数据框,如下所示:
2 3 4 | Group_1 = c("A","A","A","A","A","B","B","B","B","C"), Group_2 = c("A","B","C","A","B","A","B","A","C","A") ) |
我想为 Group_1 ID 分配一个连续编号,对于相同的 Group_2 ID,该编号应该是唯一的。例如,A A 以 1 开头,A B 以 2 继续(相同的 Group_1 ID,但新的 Group_2 ID),...,A A 再次为 1(显然是重复)。 B A 为 1(新的 Group_1 ID),...,B A(相同的 Group_1 ID,但新的 Group_2 ID)...等等。
结果应该是这样的。
2 3 4 5 | Group_1 = c("A","A","A","A","A","B","B","B","B","C"), Group_2 = c("A","B","C","A","B","A","B","A","C","A"), ID = c(1, 2, 3, 1, 2, 1, 2, 1, 1, 1) ) |
我调查了有关相应方法的各种帖子,例如组中的单个组或组合 - 没有任何成功 - 这个案例没有包含在以前的帖子中。
提前谢谢你。
使用
2 3 4 5 6 7 8 9 10 11 12 13 14 | DF_A # Group_1 Group_2 ID #1 A A 1 #2 A B 2 #3 A C 3 #4 A A 1 #5 A B 2 #6 B A 1 #7 B B 2 #8 B A 1 #9 B C 3 #10 C A 1 |
等价的
2 3 4 | DF_A %>% group_by(Group_1) %>% mutate(ID = match(Group_2, unique(Group_2))) |
您可以使用因子水平的整数值。我们可以简单地将
2 3 4 5 6 7 8 9 10 11 12 | # Group_1 Group_2 ID # 1 A A 1 # 2 A B 2 # 3 A C 3 # 4 A A 1 # 5 A B 2 # 6 B A 1 # 7 B B 2 # 8 B A 1 # 9 B C 3 # 10 C A 1 |
您可以按 Group_1 分组,然后从每个组内的组合中创建因子,然后转换为整数
我们可以使用 dplyr 中的
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | DF_A2 <- DF_A %>% group_by(Group_1) %>% mutate(ID = dense_rank(Group_2)) %>% ungroup() DF_A2 # # A tibble: 10 x 3 # Group_1 Group_2 ID # <fct> <fct> <int> # 1 A A 1 # 2 A B 2 # 3 A C 3 # 4 A A 1 # 5 A B 2 # 6 B A 1 # 7 B B 2 # 8 B A 1 # 9 B C 3 # 10 C A 1 |
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia
我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(
我想通过内部数组中的第一个元素从数组数组中找到唯一元素。例如a=[[1,2],[2,3],[1,5]我想要类似的东西[[1,2],[2,3]] 最佳答案 uniq方法需要一个block:uniq_a=a.uniq(&:first)或者如果您想就地进行:a.uniq!(&:first)例如:>>a=[[1,2],[2,3],[1,5]]=>[[1,2],[2,3],[1,5]]>>a.uniq(&:first)=>[[1,2],[2,3]]>>a=>[[1,2],[2,3],[1,5]]或者>>a=[[1,2],[2,3],[1,5]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?
当您在Ruby脚本中使用系统调用时,您可以像这样获得该命令的输出:output=`ls`putsoutput这就是thisquestion是关于。但是有没有办法显示系统调用的连续输出?例如,如果您运行此安全复制命令,以通过SSH从服务器获取文件:scpuser@someserver:remoteFile/some/local/folder/...它显示随着下载进度的连续输出。但是这个:output=`scpuser@someserver:remoteFile/some/local/folder/`putsoutput...不捕获该输出。如何从我的Ruby脚本中显示正在进行的下载进度?
我在Ruby中遇到了一个关于Dir[]和File.join()的简单程序,blobs_dir='/path/to/dir'Dir[File.join(blobs_dir,"**","*")].eachdo|file|FileUtils.rm_rf(file)ifFile.symlink?(file)我有两个困惑:首先,File.join(@blobs_dir,"**","*")中的第二个和第三个参数是什么意思?其次,Dir[]在Ruby中有什么用?我只知道它等价于Dir.glob(),但是,我对Dir.glob()确实不是很清楚。 最佳答案
下面有没有更优雅的方法来实现这个:输入:array=[1,1,1,0,0,1,1,1,1,0]输出:4我的算法:streak=0max_streak=0arr.eachdo|n|ifn==1streak+=1elsemax_streak=streakifstreak>max_streakstreak=0endendputsmax_streak 最佳答案 类似于w0lf'sanswer,但通过从chunk返回nil来跳过元素:array.chunk{|x|x==1||nil}.map{|_,x|x.size}.max
我有一个整数数组m。我正在寻找一种方法来检查m的元素是否连续。有没有办法测试连续数字?我想出了这段代码,旨在在数组长度为四时工作:m.count==4&&(m.max-m.min)==3对于[1,1,1,4]或[0,0,0,3]错误地返回true。 最佳答案 Enumerable有一个非常方便的方法叫做each_cons是这样工作的:[1,2,3,4].each_cons(2).to_a#=>[[1,2],[2,3],[3,4]]也就是说,它会生成每组连续的n元素。在我们的例子中,n是2。当然,顾名思义,它返回一个Enumerato