gpt4 book ai didi

根据另一个因子重新排序因子水平

转载 作者:行者123 更新时间:2023-12-03 16:15:04 25 4
gpt4 key购买 nike

我有一个数据框 data如下。

data <- structure(list(fac1 = structure(c(6L, 16L, 4L, 14L, 1L, 7L, 3L, 
2L, 15L, 10L, 11L, 9L, 8L, 5L, 13L, 12L), .Label = c("dd85",
"ee01", "ee12", "ee78", "gs85", "jj45", "jj63", "qe89", "qq74",
"tt23", "tt78", "vd41", "vd51", "ww77", "yy25", "yy85"), class = "factor"),
fac2 = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L), .Label = c("md", "av", "zr", "kj"), class = "factor")), .Names = c("fac1",
"fac2"), row.names = c(NA, 16L), class = "data.frame")


levels(data$fac1)
levels(data$fac2)

data
fac1 fac2
1 jj45 md
2 yy85 md
3 ee78 md
4 ww77 md
5 dd85 av
6 jj63 av
7 ee12 av
8 ee01 av
9 yy25 zr
10 tt23 zr
11 tt78 zr
12 qq74 zr
13 qe89 kj
14 gs85 kj
15 vd51 kj
16 vd41 kj

levels(data$fac1)
[1] "dd85" "ee01" "ee12" "ee78" "gs85" "jj45" "jj63" "qe89" "qq74" "tt23" "tt78" "vd41" "vd51" "ww77" "yy25" "yy85"

levels(data$fac2)
[1] "md" "av" "zr" "kj"

如何重新排序 fac1 的级别基于 fac2 ?

我试过 factor(data, levels=data[order(data$fac2),], ordered=TRUE)根据这个 question ,但它给出了两个级别。
factor(data, levels=data[order(data$fac2),], ordered=TRUE)
fac1 fac2
c(6, 16, 4, 14, 1, 7, 3, 2, 15, 10, 11, 9, 8, 5, 13, 12) c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4)
2 Levels: c(6, 16, 4, 14, 1, 7, 3, 2, 15, 10, 11, 9, 8, 5, 13, 12) < ...

最佳答案

假设我了解您的要求,您可以尝试对 data.frame 进行排序,然后传递 fac1作为(顺序)级别。

data$fac1 <- factor(data$fac1, levels = data[order(data$fac2), "fac1"])
levels(data$fac1)

> data
fac1 fac2
1 jj45 md
2 yy85 md
3 ee78 md
4 ww77 md
5 dd85 av
6 jj63 av
7 ee12 av
8 ee01 av
9 yy25 zr
10 tt23 zr
11 tt78 zr
12 qq74 zr
13 qe89 kj
14 gs85 kj
15 vd51 kj
16 vd41 kj
> levels(data$fac1)
[1] "jj45" "yy85" "ee78" "ww77" "dd85" "jj63" "ee12" "ee01" "yy25"
[10] "tt23" "tt78" "qq74" "qe89" "gs85" "vd51" "vd41"

关于根据另一个因子重新排序因子水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com