gpt4 book ai didi

通过从另一个变量中获取值来随机替换值

转载 作者:行者123 更新时间:2023-12-04 02:41:42 25 4
gpt4 key购买 nike

我想用另一个变量替换一个变量的一些值(比如 10 个中的 3 个值)。选择必须是随机的,并且必须保持相同的 ID。

这是一个示例数据,

id <- c(seq(1:10))
a <- c(11, 22, 33, 44, 55, 66, 77, 88, 99, 109)
b <- c(111, 222, 333, 444, 555, 666, 777, 888, 999, 1099)
data <- data.frame(id, a, b)
data

> data
id a b
1 1 11 111
2 2 22 222
3 3 33 333
4 4 44 444
5 5 55 555
6 6 66 666
7 7 77 777
8 8 88 888
9 9 99 999
10 10 109 1099

现在假设我想用相同 ID 下的变量 b 的值替换变量 a 中的 3 个值。一个示例输出可能是,

> data
id a b
1 1 11 111
2 2 22 222
3 3 333 333
4 4 44 444
5 5 55 555
6 6 666 666
7 7 77 777
8 8 88 888
9 9 99 999
10 10 1099 1099

谁能帮我做这件事? Tidy 或 data.table 两种解决方案都很好。

最佳答案

这是一个选项,我们创建行索引 ('i1') 的 sample,用于在 base R

i1 <- sample(seq_len(nrow(data)), 3, replace = FALSE)
data$a[i1] <- data$b[i1]

或者使用 dplyr,使用 row_number() 创建条件并在 case_when 中使用它(ifelseif_elsereplace) 将 'a' 中的值更改为 'b' 中的值

library(dplyr)
data %>%
mutate(a = case_when(row_number() %in%
sample(id, 3, replace = FALSE) ~ b, TRUE ~ a))

或者使用data.table,将'data.frame'转换为'data.table'(setDT),指定i使用数字索引,并在 j

中进行赋值 (:=)
library(data.tbale)
setDT(data)[sample(id, 3, replace = FALSE), a := b][]

关于通过从另一个变量中获取值来随机替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59077771/

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