gpt4 book ai didi

r - 将列中的唯一值更改为两个特定值之一

转载 作者:行者123 更新时间:2023-12-01 13:13:38 24 4
gpt4 key购买 nike

总结

我试图在更改数据框的格式之前组织它。在我的 data.frame 中,有 2 个因素下的值(factor1factor2)。 factor2 中的级别在 factor 1 下成对分组(例如,13 和 17)。在每对 factor2 中,我想将其中一个数字重命名为 A,另一个重命名为 B。重命名顺序是任意的,值可以是 AB。从前面的示例中得出,13 或 17 可以是 A 或 B,只要给定数字 A 和另一个 B。请注意,factor1 中的某些级别没有一对数据和可能只有 1 个。

之后,我想将数据框 reshape 为另一种格式,如下所示(参见#3)

这是一个示例 data.frame

sampledata <- data.frame(factor0 = c("A", "A", "H", "H", "A", "A", "H", "H", "A", "A",
"H", "H", "A", "A", "H", "H", "A", "A", "H", "H"),
factor1 = c("1", "1", "2", "2", "3", "3", "4", "4", "5", "5",
"6", "6", "7", "7", "8", "8", "9", "9", "10", "10"),
factor2 = c("13", "17", "14", "18", "5", "15", "19", "16", "20", "17",
"18", "19", "21", "24", "27", "28", "30", "30", "17", "18"),
value1 = c(1, 5, 6, 2, 6, 8, 10, 21, 30, 5, 3, 5, 4, 50, 4, 7, 15, 48, 20, 21,
value1.se = c(0.5, 0.5, 0.6, 0.2, 0.6, 0.8, 0.10, 0.21, 0.30, 0.5,
0.3, 0.5, 0.4, 1.50, 1.4, 1.7, 1.5, 0.48, 2.1, 21)))

1。一开始,数据表会是这样的:

> sampledata
# factor0 factor1 factor2 value1 value1.se
# 1 A 1 13 1 0.5
# 2 A 1 17 5 0.5
# 3 H 1 14 6 0.6
# 4 H 1 18 2 0.2
# 5 A 2 5 6 0.6
# 6 A 2 15 8 0.8
# 7 H 2 19 10 0.10
# 8 H 2 16 21 0.21

2。之后,表格将如下所示:

> sampledata
# factor0 factor1 factor2 value1 value1.se
# 1 A 1 A 1 0.5
# 2 A 1 B 5 0.5
# 3 H 1 A 6 0.6
# 4 H 1 B 2 0.2
# 5 A 2 A 6 0.6
# 6 A 2 B 8 0.8
# 7 H 2 A 10 0.10
# 8 H 2 B 21 0.21

3。最后,数据表应该是这样的:

> sampledata
# factor0 factor1 value_A value_B se_A se_B
# 1 A 1 1 5 0.5 0.5
# 2 H 1 6 2 0.6 0.2
# 3 A 2 6 8 0.6 0.8
# 4 H 2 10 21 0.10 0.21

我有另一个因素想按 (factor0) 分组,但我认为我可以自己管理它。我想以这种方式组织数据的主要原因是我可以绘制 value_AvalueB 相互对比,factor0 被着色.

最佳答案

您可以使用分组数据的长度将 factor2 更改为值 AB,然后使用 pivot_wider() 对其进行整形(需要tidyr v1.0.0)。

library(dplyr)
library(tidyr)

sampledata %>%
group_by(factor0, factor1) %>%
mutate(factor2 = c("A", "B")[sequence(n())]) %>%
pivot_wider(names_from = factor2, values_from = c(value1, value1.se))

# A tibble: 10 x 6
# Groups: factor0, factor1 [20]
factor0 factor1 value1_A value1_B value1.se_A value1.se_B
<fct> <fct> <dbl> <dbl> <dbl> <dbl>
1 A 1 1 5 0.5 0.5
2 H 2 6 2 0.6 0.2
3 A 3 6 8 0.6 0.8
4 H 4 10 21 0.1 0.21
5 A 5 30 5 0.3 0.5
6 H 6 3 5 0.3 0.5
7 A 7 4 50 0.4 1.5
8 H 8 4 7 1.4 1.7
9 A 9 15 48 1.5 0.48
10 H 10 20 21 2.1 21

关于r - 将列中的唯一值更改为两个特定值之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071524/

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