R中的矩阵重排
我有一个矩阵,我想用另一种方式来排序 我得到的是这个矩阵:R中的矩阵重排,r,sorting,R,Sorting,我有一个矩阵,我想用另一种方式来排序 我得到的是这个矩阵: item est 1 KT001_Cat1 -0.85 2 KT001_Cat2 0.04 3 KT001_Cat3 0.34 4 KT001_Cat4 0.97 5 KT002_Cat1 -0.81 6 KT002_Cat2 -0.60 7 KT002_Cat3 0.65 8 KT003_Cat1 -0.40 9 KT003_Cat2 -0.19
item est
1 KT001_Cat1 -0.85
2 KT001_Cat2 0.04
3 KT001_Cat3 0.34
4 KT001_Cat4 0.97
5 KT002_Cat1 -0.81
6 KT002_Cat2 -0.60
7 KT002_Cat3 0.65
8 KT003_Cat1 -0.40
9 KT003_Cat2 -0.19
10 KT003_Cat3 0.56
11 KT004_Cat1 -1.21
item est.1 est.2 est.3 est.4
1 KT001 -0.85 0.04 0.34 0.97
2 KT002 -0.81 -0.60 0.65 NA
3 KT003 -0.40 -0.19 0.56 NA
4 KT004 -1.21 NA NA NA
我想要的是这个矩阵:
item est
1 KT001_Cat1 -0.85
2 KT001_Cat2 0.04
3 KT001_Cat3 0.34
4 KT001_Cat4 0.97
5 KT002_Cat1 -0.81
6 KT002_Cat2 -0.60
7 KT002_Cat3 0.65
8 KT003_Cat1 -0.40
9 KT003_Cat2 -0.19
10 KT003_Cat3 0.56
11 KT004_Cat1 -1.21
item est.1 est.2 est.3 est.4
1 KT001 -0.85 0.04 0.34 0.97
2 KT002 -0.81 -0.60 0.65 NA
3 KT003 -0.40 -0.19 0.56 NA
4 KT004 -1.21 NA NA NA
有人知道如何重新排列数据,使其看起来像在第二个块中吗?使用“分离”来分离列,然后使用“更宽的透视”来分散数据
df <- read.table(text = "item est
1 KT001_Cat1 -0.85
2 KT001_Cat2 0.04
3 KT001_Cat3 0.34
4 KT001_Cat4 0.97
5 KT002_Cat1 -0.81
6 KT002_Cat2 -0.60
7 KT002_Cat3 0.65
8 KT003_Cat1 -0.40
9 KT003_Cat2 -0.19
10 KT003_Cat3 0.56
11 KT004_Cat1 -1.21", header = TRUE)
library(dplyr)
library(tidyr)
df %>% separate(item, into = c("item", "Cat"), sep = "_") %>%
pivot_wider(names_from = Cat, values_from = est)
# A tibble: 4 x 5
item Cat1 Cat2 Cat3 Cat4
<chr> <dbl> <dbl> <dbl> <dbl>
1 KT001 -0.85 0.04 0.34 0.97
2 KT002 -0.81 -0.6 0.65 NA
3 KT003 -0.4 -0.19 0.56 NA
4 KT004 -1.21 NA NA NA
我们可以使用R基地的XTAB
-输出
# V2
#V1 Cat1 Cat2 Cat3 Cat4
# KT001 -0.85 0.04 0.34 0.97
# KT002 -0.81 -0.60 0.65 0.00
# KT003 -0.40 -0.19 0.56 0.00
# KT004 -1.21 0.00 0.00 0.00
data.table选项
精彩的阅读。餐桌之路!