Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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 - Fatal编程技术网

按R中的多列对数据帧进行排序,不区分大小写

按R中的多列对数据帧进行排序,不区分大小写,r,R,我有3个向量: n<-10e3 ch<-append(LETTERS,letters) a<-sample(ch,n,replace=TRUE) b<-sample(ch,n,replace=TRUE) c<-sample(ch,n,replace=TRUE) df<-data.frame(a,b,c) 但问题是,它是区分大小写的,结果是这样的: 5359 A a b 7325 A a B 7200 A a g

我有3个向量:

n<-10e3    
ch<-append(LETTERS,letters)

a<-sample(ch,n,replace=TRUE)    
b<-sample(ch,n,replace=TRUE)    
c<-sample(ch,n,replace=TRUE)

df<-data.frame(a,b,c)
但问题是,它是区分大小写的,结果是这样的:

5359 A a b    
7325 A a B    
7200 A a g   
9122 A a V   
2144 A a W    
5984 A a z    
8349 A A e    
5215 A A E    
4007 A A f    
3099 A A H    
3220 A A i    
7080 A A N    
4963 A A r   
9159 A A V    
4219 A A w    
9723 A b b    
4463 A b h    
7894 A b V    
3765 A B a    
8772 A B b

例如,如您所见,它在“A z”之后加上“A e”。如何使其不区分大小写?

如果您不介意转到dplyr表单

@library(tidyverse)
df %>% 
   as_tibble() %>% 
   mutate(lowcase = tolower(paste(a,b,c))) %>% 
   arrange(lowcase)
# A tibble: 10,000 x 4
   a     b     c     lowcase
   <fct> <fct> <fct> <chr>  
 1 a     A     D     a a d  
 2 A     A     L     a a l  
 3 a     a     N     a a n  
 4 A     A     n     a a n  
 5 a     a     w     a a w  
 6 A     a     X     a a x  
 7 A     A     Y     a a y  
 8 a     A     Y     a a y  
 9 A     b     A     a b a  
10 A     B     a     a b a  
@库(tidyverse)
df%>%
as_tible()%>%
变异(lowcase=tolower(粘贴(a,b,c)))%>%
排列(低格)
#一个tibble:10000 x 4
a、b、c低盒
1 a D a D a D
2 A L A L A L
3 a N a N
4 A n A n A n
5 a w a w a w
6a X A X
7 A Y A Y A Y
8 a Y a Y a Y
9 A b A b A A b A
10 A B A B A A B A

如果您不介意转到dplyr表单

@library(tidyverse)
df %>% 
   as_tibble() %>% 
   mutate(lowcase = tolower(paste(a,b,c))) %>% 
   arrange(lowcase)
# A tibble: 10,000 x 4
   a     b     c     lowcase
   <fct> <fct> <fct> <chr>  
 1 a     A     D     a a d  
 2 A     A     L     a a l  
 3 a     a     N     a a n  
 4 A     A     n     a a n  
 5 a     a     w     a a w  
 6 A     a     X     a a x  
 7 A     A     Y     a a y  
 8 a     A     Y     a a y  
 9 A     b     A     a b a  
10 A     B     a     a b a  
@库(tidyverse)
df%>%
as_tible()%>%
变异(lowcase=tolower(粘贴(a,b,c)))%>%
排列(低格)
#一个tibble:10000 x 4
a、b、c低盒
1 a D a D a D
2 A L A L A L
3 a N a N
4 A n A n A n
5 a w a w a w
6a X A X
7 A Y A Y A Y
8 a Y a Y a Y
9 A b A b A A b A
10 A B A B A A B A

使用
tolower
toupper
order
中的列中这是一个好问题的开始,Kamil,感谢您花费时间使其大部分可重复!然而,一些想法:(1)当使用随机数据时,如果您希望我们能够重现您的随机数据,请在提取随机性之前使用
set.seed(42)
(或一些数字)。(2) 我们当然不需要生成包含
10e3
行的帧,我认为8-10行就足够了。在这种情况下,我知道你有一个具体的例子,所以。。。也许你根本不需要随机性,你可以使用
data.frame(a=c(…),b=c(…),c=c(…)
。使用
tolower
toupper
order
中的列上使用
order
这是一个好问题的开始,Kamil,谢谢你花时间让它几乎可以重现!然而,一些想法:(1)当使用随机数据时,如果您希望我们能够重现您的随机数据,请在提取随机性之前使用
set.seed(42)
(或一些数字)。(2) 我们当然不需要生成包含
10e3
行的帧,我认为8-10行就足够了。在这种情况下,我知道你有一个具体的例子,所以。。。也许您根本不需要随机性,您可以使用
data.frame(a=c(…),b=c(…),c=c(…)