gpt4 book ai didi

R 函数重新编码值或类似的(如 SPSS)

转载 作者:行者123 更新时间:2023-12-05 08:44:53 25 4
gpt4 key购买 nike

我有一个具有这种结构的数据框:

id v1 v2 v3 v4 v5
1 . 1 . 2 3
2 1 2 3 . .
3 3 2 . 1 .

我想像这样重新编码

id v1 v2 v3 v4 v5
1 0 3 0 2 1
2 3 2 1 0 0
3 1 2 0 3 0

所以我想重新编码值 (1=3) (missing = 0) (3=1)

在 SPSS 中,这是相当直观的:

recode v1 to v5 (sysmis=0)(3=1)(1=3)(else=copy). 

我正在 R 中寻找类似的方法。对 base 或 tidyverse 方法没有偏好。

最佳答案

. 替换为 NA,将列类型 (type.convert) 转换为数字,从 4 中减去并替换 code>NA 为 0

df[df == "."] <- NA
df <- type.convert(df, as.is = TRUE)
df[-1] <- 4- df[-1]
df[is.na(df)] <- 0

或者使用tidyverse

library(dplyr)
library(tidyr)
df %>%
mutate(across(-id, ~ replace_na(4 - as.numeric(.x), 0)))

-输出

  id v1 v2 v3 v4 v5
1 1 0 3 0 2 1
2 2 3 2 1 0 0
3 3 1 2 0 3 0

-输出

> df
id v1 v2 v3 v4 v5
1 1 0 3 0 2 1
2 2 3 2 1 0 0
3 3 1 2 0 3 0

数据

df <- structure(list(id = 1:3, v1 = c(".", "1", "3"), v2 = c(1L, 2L, 

2L), v3 = c(".", "3", "."), v4 = c("2", ".", "1"), v5 = c("3",
".", ".")), class = "data.frame", row.names = c(NA, -3L))

关于R 函数重新编码值或类似的(如 SPSS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74997032/

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