gpt4 book ai didi

用 R 中的列值替换整个数据框中的值

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

我做了一些搜索,但找不到这个问题的明显答案,所以希望这不是一个重复的问题。我的数据框如下所示:

X1 X2 V1 V2 V3 ... Vn
A B 0 1 2 1
B C 1 0 1 0
A C 2 1 0 1

我想要实现的是将 V1 到 Vn 的值替换为 X2 的“剂量”。所以对于第1行(每行可能有不同的X1和X2值),

  • 如果值为0,我想将其替换为AA;
  • 如果值为1,我想将其替换为AB;
  • 如果值为2,我想替换为BB;

预期结果是:

X1 X2 V1 V2 V3 ... Vn
A B AA AB BB AB
B C BC BB BC BB
A C CC AC AA AC

这是示例数据框:

df=data.frame(X1=c("A","B","A"),
X2=c("B","C","C"),
V1=c(0,1,2),
V2=c(1,0,1),
V3=c(2,1,0))

感谢您的帮助!

最佳答案

这灵感来自@Matt 的回答。我们可以使用 mutate_atpaste0 来完成这个任务。

## Load packages
library(dplyr)

dat2 <- dat %>%
mutate_at(vars(-X1, -X2), .funs = list(
~case_when(
. == 0 ~paste0(X1, X1),
. == 1 ~paste0(X1, X2),
. == 2 ~paste0(X2, X2),
TRUE ~NA_character_
)
))
dat2
# X1 X2 V1 V2 V3 Vn
# 1 A B AA AB BB AB
# 2 B C BC BB BC BB
# 3 A C CC AC AA AC

数据

dat <- read.table(text = "X1 X2 V1 V2 V3 Vn
A B 0 1 2 1
B C 1 0 1 0
A C 2 1 0 1 ",
stringsAsFactors = FALSE, header = TRUE)

关于用 R 中的列值替换整个数据框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61740608/

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