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

如何在R中对特定列进行排序

如何在R中对特定列进行排序,r,dplyr,R,Dplyr,我想得到下表中的O列 BB K C O P 1 c1 O14 2 1 c2 o1 1 3 1 c3 o1 8 4 1 c4 o2 3 5 1 c5 o2 4 6 1 c6 o2 9 7 2 c1 o1 2 8 2 c2 o1 1 9 2 c3 o1 3 10 2 c4 o2 8 11 2 c5 o2 7 12 2 c6 o2 9 13 3 c1 O16 14 3 c2 o1 10 15 3 c3 O16 16 3 c4 o2 17 3 c5 o2 9 18 3 c6 o2 5我们可以使用代表

我想得到下表中的O列


BB K C O P
1 c1 O14
2 1 c2 o1 1
3 1 c3 o1 8
4 1 c4 o2 3
5 1 c5 o2 4
6 1 c6 o2 9
7 2 c1 o1 2
8 2 c2 o1 1
9 2 c3 o1 3
10 2 c4 o2 8
11 2 c5 o2 7
12 2 c6 o2 9
13 3 c1 O16
14 3 c2 o1 10
15 3 c3 O16
16 3 c4 o2
17 3 c5 o2 9

18 3 c6 o2 5
我们可以使用
代表

library(dplyr)

df %>%
  group_by(K) %>%
  mutate(O = rep(c('o1', 'o2'), each = n()/2, length.out = n()))

#      BB K     C     O         P
#   <int> <fct> <chr> <chr> <int>
# 1     1 1     c1    o1        8
# 2     2 1     c2    o1        6
# 3     3 1     c3    o1        2
# 4     4 1     c4    o2       10
# 5     5 1     c5    o2       10
# 6     6 1     c6    o2        9
# 7     7 2     c1    o1        9
# 8     8 2     c2    o1        3
# 9     9 2     c3    o1        2
#10    10 2     c4    o2        6
#11    11 2     c5    o2        9
#12    12 2     c6    o2        3
#13    13 3     c1    o1        8
#14    14 3     c2    o1        1
#15    15 3     c3    o1        2
#16    16 3     c4    o2        2
#17    17 3     c5    o2        7
#18    18 3     c6    o2        5
库(dplyr)
df%>%
组别(K)%>%
变异(O=rep(c('o1','o2'),每个=n()/2,length.out=n())
#BB K C O P
#       
#1 c1 O18
#2 2 1 c2 o1 6
#3 3 1 c3 o1 2
#4 4 1 c4 o2 10
#5 5 1 c5 o2 10
#6 6 1 c6 o2 9
#7 7 2 c1 O19
#8 8 2 c2 o1 3
#9 2 c3 o1 2
#10102C4O2 6
#11 11 2 c5 o2 9
#12 12 2 c6 o2 3
#13 3 c1 O18
#14 14 3 c2 o1 1
#15 15 3 c3 o1 2
#16 16 3 c4 o2
#17 17 3 c5 o2 7
#18 18 3 c6 o2 5

我们可以使用
rep

library(dplyr)

df %>%
  group_by(K) %>%
  mutate(O = rep(c('o1', 'o2'), each = n()/2, length.out = n()))

#      BB K     C     O         P
#   <int> <fct> <chr> <chr> <int>
# 1     1 1     c1    o1        8
# 2     2 1     c2    o1        6
# 3     3 1     c3    o1        2
# 4     4 1     c4    o2       10
# 5     5 1     c5    o2       10
# 6     6 1     c6    o2        9
# 7     7 2     c1    o1        9
# 8     8 2     c2    o1        3
# 9     9 2     c3    o1        2
#10    10 2     c4    o2        6
#11    11 2     c5    o2        9
#12    12 2     c6    o2        3
#13    13 3     c1    o1        8
#14    14 3     c2    o1        1
#15    15 3     c3    o1        2
#16    16 3     c4    o2        2
#17    17 3     c5    o2        7
#18    18 3     c6    o2        5
库(dplyr)
df%>%
组别(K)%>%
变异(O=rep(c('o1','o2'),每个=n()/2,length.out=n())
#BB K C O P
#       
#1 c1 O18
#2 2 1 c2 o1 6
#3 3 1 c3 o1 2
#4 4 1 c4 o2 10
#5 5 1 c5 o2 10
#6 6 1 c6 o2 9
#7 7 2 c1 O19
#8 8 2 c2 o1 3
#9 2 c3 o1 2
#10102C4O2 6
#11 11 2 c5 o2 9
#12 12 2 c6 o2 3
#13 3 c1 O18
#14 14 3 c2 o1 1
#15 15 3 c3 o1 2
#16 16 3 c4 o2
#17 17 3 c5 o2 7
#18 18 3 c6 o2 5
用户330, 以下是构建tibble的另一种方法:

# Load Libraries
library('tidyverse')

# Set up Tibble
df <- tibble(BB = seq(1:18)) %>% 
  mutate(K = rep(1:3, each=6)) %>% 
  mutate(C = rep(paste0("c",seq(1:6),sep=""), times = 3)) %>% 
  mutate(O = rep(paste0("o",seq(1:2),sep=""), each = 3, times = 3)) %>% 
  mutate(P = sample(1:10, n(), replace = TRUE))

# Check results
df
#> # A tibble: 18 x 5
#>       BB     K C     O         P
#>    <int> <int> <chr> <chr> <int>
#>  1     1     1 c1    o1       10
#>  2     2     1 c2    o1        2
#>  3     3     1 c3    o1        8
#>  4     4     1 c4    o2        8
#>  5     5     1 c5    o2       10
#>  6     6     1 c6    o2        1
#>  7     7     2 c1    o1        1
#>  8     8     2 c2    o1        9
#>  9     9     2 c3    o1        4
#> 10    10     2 c4    o2        9
#> 11    11     2 c5    o2        7
#> 12    12     2 c6    o2        3
#> 13    13     3 c1    o1        3
#> 14    14     3 c2    o1       10
#> 15    15     3 c3    o1        3
#> 16    16     3 c4    o2        7
#> 17    17     3 c5    o2        4
#> 18    18     3 c6    o2        5
#加载库
库('tidyverse')
#设置Tibble
df%
突变(K=rep(1:3,每个=6))%>%
突变(C=rep(paste0(“C”,seq(1:6),sep=”“),时间=3))%>%
变异(O=rep(paste0(“O”,seq(1:2),sep=”“),每个=3,次=3))%>%
变异(P=sample(1:10,n(),replace=TRUE))
#检查结果
df
#>#tibble:18 x 5
#>BB K C O P
#>        
#>1 c1 o1 10
#>2 2 1 c2 o1 2
#>3 3 1 c3 o1 8
#>4 4 1 c4 o2 8
#>5 5 1 c5 o2 10
#>6 6 1 c6 o2 1
#>7 7 2 c1 o1 1
#>8 8 2 c2 O19
#>9 2 c3 o1 4
#>10102C4O29
#>11 11 2 c5 o2 7
#>12 12 2 c6 o2 3
#>13 13 3 c1 o1 3
#>14 14 3 c2 o1 10
#>15 15 3 c3 o1 3
#>16 16 3 c4 o2 7
#>17 17 3 c5 o2 4
#>18 18 3 c6 o2 5
用户330, 以下是构建tibble的另一种方法:

# Load Libraries
library('tidyverse')

# Set up Tibble
df <- tibble(BB = seq(1:18)) %>% 
  mutate(K = rep(1:3, each=6)) %>% 
  mutate(C = rep(paste0("c",seq(1:6),sep=""), times = 3)) %>% 
  mutate(O = rep(paste0("o",seq(1:2),sep=""), each = 3, times = 3)) %>% 
  mutate(P = sample(1:10, n(), replace = TRUE))

# Check results
df
#> # A tibble: 18 x 5
#>       BB     K C     O         P
#>    <int> <int> <chr> <chr> <int>
#>  1     1     1 c1    o1       10
#>  2     2     1 c2    o1        2
#>  3     3     1 c3    o1        8
#>  4     4     1 c4    o2        8
#>  5     5     1 c5    o2       10
#>  6     6     1 c6    o2        1
#>  7     7     2 c1    o1        1
#>  8     8     2 c2    o1        9
#>  9     9     2 c3    o1        4
#> 10    10     2 c4    o2        9
#> 11    11     2 c5    o2        7
#> 12    12     2 c6    o2        3
#> 13    13     3 c1    o1        3
#> 14    14     3 c2    o1       10
#> 15    15     3 c3    o1        3
#> 16    16     3 c4    o2        7
#> 17    17     3 c5    o2        4
#> 18    18     3 c6    o2        5
#加载库
库('tidyverse')
#设置Tibble
df%
突变(K=rep(1:3,每个=6))%>%
突变(C=rep(paste0(“C”,seq(1:6),sep=”“),时间=3))%>%
变异(O=rep(paste0(“O”,seq(1:2),sep=”“),每个=3,次=3))%>%
变异(P=sample(1:10,n(),replace=TRUE))
#检查结果
df
#>#tibble:18 x 5
#>BB K C O P
#>        
#>1 c1 o1 10
#>2 2 1 c2 o1 2
#>3 3 1 c3 o1 8
#>4 4 1 c4 o2 8
#>5 5 1 c5 o2 10
#>6 6 1 c6 o2 1
#>7 7 2 c1 o1 1
#>8 8 2 c2 O19
#>9 2 c3 o1 4
#>10102C4O29
#>11 11 2 c5 o2 7
#>12 12 2 c6 o2 3
#>13 13 3 c1 o1 3
#>14 14 3 c2 o1 10
#>15 15 3 c3 o1 3
#>16 16 3 c4 o2 7
#>17 17 3 c5 o2 4
#>18 18 3 c6 o2 5

创建列
O
的逻辑是什么?如果查看列C、c1、c2、c3获取o1和c4,c5和c6获取o2。K有6个值:1,3 gos到c1,c2,c3,3到c4,c5和c6。您希望c1,c2,c3到o1还是一半的值应该到o1,另一半到o2?如果有更多的c值呢?从c1到c10?一半的值应流向o1,另一半流向o2。如果我们有c1到c10,同样一半到o1,一半到o2,那么这个列上的group_by的逻辑是什么?创建列
O
的逻辑是什么?如果你看列C,c1,c2,c3得到o1和c4,c5和c6得到o2。K有6个值:1,3 gos到c1,c2,c3,3到c4,c5和c6。您希望c1,c2,c3到o1还是一半的值应该到o1,另一半到o2?如果有更多的c值呢?从c1到c10?一半的值应流向o1,另一半流向o2。如果我们有c1到c10,一半转到o1,另一半转到O2,那么这一列的组别的逻辑是什么?