如何在R中对特定列进行排序
我想得到下表中的O列如何在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我们可以使用代表
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,那么这一列的组别的逻辑是什么?