标签: recode

在R中重新编码数值

我想将一些数值重新编码为不同的数值,并使用以下代码:

survey$KY27PHYc <- revalue(survey$KY27PHY1, c(5=3, 4=2,3=2,2=1,1=1))

我收到以下错误:

## Error: unexpected '=' in "survey$KY27PHYc <- revalue(survey$KY27PHY1, c(5="
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

r numeric recode

4
推荐指数
2
解决办法
8519
查看次数

R:如何一次重新编码多个变量

我的数据集中有几个变量需要以完全相同的方式进行重新编码,还有一些其他需要以不同方式重新编码的变量.我试着写一个函数来帮助我,但我遇到了麻烦.

library(dplyr)
recode_liberalSupport = function(arg1){
  arg1 = recode(arg1, "1=-1;2=1;else=NA")
  return(arg1)
}

liberals = c(df$var1, df$var4, df$var8)
for(i in unique(liberals)){
  paste(df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport))
}
Run Code Online (Sandbox Code Playgroud)

R studio在这上工作约5分钟,然后给我这个错误信息:

Error in `$<-.data.frame`(`*tmp*`, liberals, value = c(NA_real_, NA_real_,  : 
  replacement has 9 rows, data has 64600
In addition: Warning messages:
1: Unknown or uninitialised column: 'liberals'. 
2: In df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport) :
  number of items to replace is not a multiple of replacement length
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激!谢谢

r dplyr recode

4
推荐指数
1
解决办法
8818
查看次数

将mutate_at用于满足两个条件的变量dplyr R

我正在尝试对数据框中的某些项目进行评分(重新编码)。所有反向得分的项目都以R结尾,并且每个音阶都有一个唯一的开始(“ hc”,“ out”和“ hm”)。我通常只选择所有以“ r”结尾的变量,但是问题是有些标度为5点标度(“ hc”和“ out”),而其他标度为7点标度(“ hm” ”)。

这是更大得多的数据集的示例:

library(tidyverse)

data <- tibble(name = c("Mike", "Ray", "Hassan"),
               hc_1 = c(1, 2, 3),
               hc_2r = c(5, 5, 4),
               out_1r = c(5, 4, 2),
               out_2 = c(2, 4, 5),
               out_3r = c(2, 2, 1),
               hm_1 = c(6, 7, 7),
               hm_2r = c(7, 1, 7))
Run Code Online (Sandbox Code Playgroud)

假设我想一次做一个标度,所以我从hm开始,它是七点标度。

我想用&语句尝试类似的操作,但出现错误:

library(tidyverse)
library(car)
data %>%
  mutate_at(vars(ends_with("r") & starts_with("hm")), ~(recode(., "1=7; 2=6; 3=5; 4=4; 5=3; 6=2; 7=1")))

Run Code Online (Sandbox Code Playgroud)

错误:ends_with("r") & starts_with("hc")必须求值为列的位置或名称,而不是逻辑向量

有什么干净的方法可以让它一次对这几个变量执行反向计分?再一次,数据集太大,实际上一次只能选择单个变量。

谢谢!

select r dplyr recode mutate

4
推荐指数
1
解决办法
46
查看次数

如何将以某个字母开头的值更改为NA(在R中)

我有一个我称之为"鱼"的数据框.

数据框有3个不同的变量.其中一个变量称为"物种".

有些物种以字母M开头.我想改变以字母M缺失(NA)开头的物种的所有值.

当你做整个物种的名字时,我知道如何将它改为NA,但你怎么做只用字母M开头的物种呢?

我试过这个:

fish$species[fish$species=="^M_"] <- NA
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有人可以帮忙吗?

r recode

3
推荐指数
1
解决办法
1364
查看次数

因子到因子的条件重新编码

我有一个 tibble, df, , , A, 我希望:

1) 的副本C, 和
2) 基于第二个变量重新编码B

目前我正在以这种迂回的方式进行。我对因子的条件重新编码感到非常困惑。我也看了dplyr'srecode,但找不到更聪明的方法。

library(tibble)
df  <- tibble(
  A = factor(c(NA, "b", "c")), 
  B = c(1,NA,3)
)
Run Code Online (Sandbox Code Playgroud)

我最初的小费

df
#> # A tibble: 3 x 2
#>        A     B
#>   <fctr> <dbl>
#> 1   <NA>     1
#> 2      b    NA
#> 3      c     3
Run Code Online (Sandbox Code Playgroud)

我当前解决方案中的第 1 步

df$C <- with(df, ifelse(is.na(B), 'B is NA', A)) 
df
#> # A tibble: 3 …
Run Code Online (Sandbox Code Playgroud)

r recode tidyverse tibble

3
推荐指数
1
解决办法
752
查看次数

R:使用 car::recode 函数重新编码变量时出错

我经常在 library(car) 中使用 'recode' 函数来重新编码变量中的级别。直到今天,我的代码都运行良好,但现在却出现了错误。df 等没有任何变化,不确定发生了什么。
可能有人可以启发我!

我的数据框(样本)

test<-structure(list(Avg.Salary = c("65000", "395", "82000", "128357", 
"95785", "95785"), Education = c("Doctorate", "Professional Degree", 
"Bachelor's", "Professional Degree", "Master's", "Master's"), 
Count = c("D", "D", "D", "D", "D", "364584"), Year = c(2017, 
2017, 2017, 2017, 2017, 2017)), row.names = c("540061", "540071", 
"540081", "540091", "540102", "540112"), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

我的实际数据集中的级别:-

    Associate Degree           Associates           Bachelor's 
             205                   35                42446 
               D            Doctorate          High School 
           42902                 9846                  191 
        Master's    Missing Education           No Diploma 
           57644                  218                   79 
    Professional  Professional …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation r-car recode

3
推荐指数
1
解决办法
2804
查看次数

如何计算每一行给定值出现的次数?

我确信这是一个非常简单的修复,但我似乎找不到答案...我试图在数据框的末尾创建一个列,它是特定值的次数总和(例如“1”)出现在该行上。例如,如果我从以下数据框开始:

X1 <- c(5,1,7,8,1,5)
X2 <- c(5,0,0,2,3,7)
X3 <- c(6,2,3,4,1,7)
X4 <- c(1,1,5,2,1,7)

df <- data.frame(id,X1,X2,X3,X4)

  id X1 X2 X3 X4
1  1  5  5  6  1
2  2  1  0  1  1
3  3  7  0  3  5
4  4  8  2  4  2
5  5  1  3  2  1
6  6  5  7  7  7
Run Code Online (Sandbox Code Playgroud)

我试图确定值“1”在该行中出现了多少次,我希望输出如下所示:

  id X1 X2 X3 X4 one_appears
1  1  5  5  6  1           2
2  2  1  0  1  1           3
3  3 …
Run Code Online (Sandbox Code Playgroud)

r dataframe recode

3
推荐指数
2
解决办法
647
查看次数

将分类变量重新编码为二进制 (0/1)

有人可以帮助我关于ifelse.

我有一个data.frame(dat) 和一个名为 Q1 ( dat$Q1)的分类变量/因子。dat$Q1被编码为 1,2,3 或 4。我需要data$new1根据以下规则创建一个新列:

如果dat$Q1 == 3然后dat$new1应该是1。否则,dat$new1应该是0

请问这样做最有效的方法是什么?

r recode

2
推荐指数
2
解决办法
3830
查看次数

为什么带有 %in% 的条件会忽略缺失值?

当我%in%在重新编码分类变量的条件下使用时,遇到了意外的输出。

当左侧向量的元素为 时NA,条件计算结果为FALSE,而我期望它是NA

预期的行为是更详细的语句,其中两个==条件由|

dt <- data.frame(colour = c("red", "orange", "blue", NA))

# Expected
dt$is_warm1 <- ifelse(dt$colour == "red" | dt$colour == "orange", TRUE, FALSE)

# Unexpected
dt$is_warm2 <- ifelse(dt$colour %in% c("red", "orange"), TRUE, FALSE)

dt
Run Code Online (Sandbox Code Playgroud)
#>   colour is_warm1 is_warm2
#> 1    red     TRUE     TRUE
#> 2 orange     TRUE     TRUE
#> 3   blue    FALSE    FALSE
#> 4   <NA>       NA    FALSE
Run Code Online (Sandbox Code Playgroud)

这在重新编码分类变量时非常没有帮助,因为它会默默地填充缺失值。为什么会发生这种情况?是否有任何不涉及列出所有==条件的替代方案?(想象一下colour包含三十个可能的级别)。

r conditional-statements recode

2
推荐指数
1
解决办法
80
查看次数

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

我有一个具有以下结构的数据框:

id v1 v2 v3 v4 v5
1  .  1  .  2  3
2  1  2  3  .  .
3  3  2  .  1  .
Run Code Online (Sandbox Code Playgroud)

我想像这样重新编码

id v1 v2 v3 v4 v5
1  0  3  0  2  1
2  3  2  1  0  0
3  1  2  0  3  0
Run Code Online (Sandbox Code Playgroud)

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

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

recode v1 to v5 (sysmis=0)(3=1)(1=3)(else=copy). 
Run Code Online (Sandbox Code Playgroud)

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

r recode tidyverse

2
推荐指数
1
解决办法
95
查看次数