gpt4 book ai didi

R在数据框中的两列之间随机交换值

转载 作者:行者123 更新时间:2023-12-04 10:33:22 27 4
gpt4 key购买 nike

我重复了一个实验(rep1 和 rep2)。对于每个重复,我有两列(a,总和)和两行属于一起的测试对象(AA 组,BB ...)。为了分析,我想将收集到的数据(a 和 sum)随机分配给 rep1 和 rep2。为此,我试图随机选择组并交换 rep1 和 rep2 的“a”和“sum”。我尝试重复随机交换 100 次,创建 100 个数据集进行分析。

我遇到 unique(df$groups) 指定每个组的数据属于一起。结合 sample(unique(df$group), 2) 它随机抽样,比方说,2 组。但是我不知道如何交换这些选定组的重复数据。

这是一个数据示例:

group = c("A", "A", "B", "B", "C", "C")
rep1_a = c(2, 8, 5, 5, 4, 6)
rep1_sum = c(10, 10, 10, 10, 10, 10)
rep2_a = c(3, 8, 4, 5, 5, 6)
rep2_sum = c(11, 11, 9, 9, 11, 11)
df = data.frame(group, rep1_a, rep1_sum, rep2_a, rep2_sum)

# group rep1_a rep1_sum rep2_a rep2_sum
1 A 2 10 3 11
2 A 8 10 8 11
3 B 5 10 4 9
4 B 5 10 5 9
5 C 4 10 5 11
6 C 6 10 6 11

这应该是这样的,如果在这 3 个组中,交换 A 组的重复:

    group     rep1_a    rep1_sum    rep2_a    rep2_sum
1 A 3 11 2 10
2 A 8 11 8 10
3 B 5 10 4 9
4 B 5 10 5 9
5 C 4 10 5 11
6 C 6 10 6 11

最佳答案

这是使用 dplyr 的一种方法。以下代码重复创建新的数据集,其中 rep1 和 rep2 按组等量混合,并对数据集进行 100 次所需的分析。

library(dplyr)   
exp_data <- data_frame()
analysis_result <- data_frame()
for (i in 1:100){
# Your new 'experiment' by mixing two real experiment randomly, indicated by 'exp_id'

new_df <- df %>%
group_by(group) %>%
mutate(x = runif(1)) %>%
mutate(repr_a = ifelse(x>0.5,rep1_a,rep2_a), repr_sum = ifelse(x>0.5,rep1_sum,rep2_sum),exp_id=i) %>%
select(exp_id,group,repr_a,repr_sum)
# Your analysis - below is my example
new_analysis <- new_df %>%
group_by(exp_id,group) %>%
summarise(outcome = mean(repr_a*repr_sum))
exp_data <- bind_rows(exp_data,new_df)
analysis_result <- bind_rows(analysis_result,new_analysis)
}

关于R在数据框中的两列之间随机交换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969314/

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