标签: recode

用R中的NA重新编码变量

我试图根据其他三个变量的值编写一个新变量.具体来说,如果所有变量都是NA,我希望新变量取NA,如果它们中的任何一个是1,它应该取1,否则它应该取0.但是,我使用下面的代码遇到错误:

frame <- data.frame(x = c(NA,NA,1), x2 = c(NA, NA, 0), x3 = c(NA,0,0))
frame

y <- ifelse(is.na(frame$x) == TRUE & is.na(frame$x2) == TRUE & is.na(frame$x3) == TRUE, NA, 0)
y2 <- ifelse(frame$x == 1 | frame$x2 == 1 | frame$x3 == 1, 1, y)
Run Code Online (Sandbox Code Playgroud)

y的第二个数字正确为0,但在y2中引用时变为NA.知道为什么会这样吗?

r na recode

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

使用R中的tidyverse重新编码多个变量

可能是一个愚蠢的问题,我想在具有多个条件的tibble中重新编码多个变量.

数据示例:

library(tidyverse)
s <- matrix(sample(1:15, 20, replace = TRUE), ncol = 4)
s <- as_tibble(s)
Run Code Online (Sandbox Code Playgroud)

这给出了这样的东西:

# A tibble: 5 x 4
     V1    V2    V3    V4
  <int> <int> <int> <int>
1    11     2     5    14
2     5     4    15     5
3    13    15     2     5
4     7    13    15    11
5    11     5    12     3
Run Code Online (Sandbox Code Playgroud)

我想用这个条件重新编码V1,V2,V3,并使V4保持相等:如果值小于或等于5得1,如果值大于5但小于或等于10得到2,最后如果值超过10来3.

输出应如下所示:

# A tibble: 5 x 4
         V1    V2    V3    V4
      <int> <int> <int> <int>
    1    3     1     1     14
    2    1     1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr recode tidyverse

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

在Spark中将连续变量转换为分类

我正在尝试将一些连续变量转换为类别变量,以便对其应用某些ML算法,并且我想将类别从6:00更改为12:00->“ Morning”或以ddMM格式将日期设置为“夏天”之类的。这些变量已经转换为整数。recode我认为像R中的函数一样。

+----------+
|CRSDepTime|
+----------+
|       745|
|      1053|
|      1915|
|      1755|
|       832|
|       630|
|       820|
|       945|
|      1245|
|      1645|
|       620|
|      1125|
|      2045|
|      1340|
|      1540|
|       730|
|      1145|
|       525|
|       630|
|      1520|
+----------+
Run Code Online (Sandbox Code Playgroud)

我用这句话解决了这个问题!

df = df.withColumn("Season", when(df("Month") >= 12 and df("Month") <=3, "Fall")
  .when(df("Month") >= 4 and df("Month") <= 6, "Spring")
  .when(df("Month") >= 7 and df("Month") <= 9, "Summer").otherwise("Autumm"))
Run Code Online (Sandbox Code Playgroud)

scala apache-spark recode

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

使用 R 在数据框中重新编码多个变量的最短、最干净的方法是什么?

所以我在社会科学领域工作,我经常要做的就是操纵多个变量来改变价值观。通常这意味着扭转规模。我使用SPSS已经很长时间了,它的语法非常简单。要更改多个变量的值,请编写:

RECODE var1 var2 var3 (1=5) (2=4) 4=2) (5=1) (ELSE=COPY).

into newvar1 newvar1 newvar3.要在最后添加的新变量中编写新代码。在括号中,您可以使用hilo1 to 4等内容。

现在我正在努力学习R,并且正在努力寻找完成类似工作流程的最佳方法。我找到了以下解决方案,但找不到一个简短的好方法:

## Packages -----
library(dplyr)
library(car)

## Data -----
tib <- tibble(v1 = 1:4, 
              v2 = 1:4,
              v3 = sample(1:5, 4, replace = FALSE))

vars <- c("v1", "v2", "v3")

Run Code Online (Sandbox Code Playgroud)

基本方式:

tib$v2_rec <- NA
tib$v2_rec[tib$v2 == 1] <- 5 #1
tib$v2_rec[tib$v2 == 2] <- 4 #2
tib$v2_rec[tib$v2 == 3] <- 3 #3
tib$v2_rec[tib$v2 == …
Run Code Online (Sandbox Code Playgroud)

r dplyr recode

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

在 Python 中重新编码类似于 R ifelse 的变量

我只是 Python 新手,正在尝试进行分析。但在此之前,我想重新编码一些变量。我想知道这个 R 代码在 Python 中是否有等价物。

df$col1 <- ifelse(df$col1 == "yes", 1, 0)
Run Code Online (Sandbox Code Playgroud)

df是一个pandas.DataFrame并且col1是它的一列。

python numpy r dataframe recode

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

如何使用根据向量评估值的条件生成新列?

假设我有这个专栏。

dataframe$column<-c(1, 2, 2, 2, 3, 4, 4, 5, 5, 5, 6, 7, 8, 9, NA, NA, 0)

我得到了这个向量

vector<- c(1, 5, 9)

我需要在数据框中创建一个新列,当任何给定行中的值等于向量的任何值时,该列将返回 0。如果不相等,我想返回 0,如果该列最初有 NA,我也想返回 NA。

因此,在我的示例中,新列应如下所示:

[1] 1 0 0 0 0 0 0 1 1 1 0 0 0 1 NA NA 0

我很确定我可以使用 apply 或 sapply 来做到这一点,但我不太擅长循环。

提前致谢。

loops r dataframe recode

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

在多种条件下重新编码 dplyr

如果变量采用 dplyr 中的三个值之一,我想将其重新编码为“缺失”。考虑以下数据框have

id  married hrs_workperwk
1   1       40
2   1       55
3   1       70
4   0       -1
5   1       99
6   0       -2
7   0       10
8   0       40
9   1       45
Run Code Online (Sandbox Code Playgroud)

-1、-2 和 99 是非法值。新的数据框want应如下所示:

id  married hrs_workperwk
1   1       40
2   1       55
3   1       70
4   0       NA
5   1       NA
6   0       NA
7   0       10
8   0       40
9   1       45
Run Code Online (Sandbox Code Playgroud)

我可以使用基本 R 来快速解决这个问题,但是当我已经使用mutate(). 唉,这意味着我目前使用多个嵌套if_else()函数:

want …
Run Code Online (Sandbox Code Playgroud)

r dplyr recode

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

如何在 dplyr 中使用 recode_factor 重新编码多个因子值?

     countrycode event
1713         ESP 110mh
1009         NED    HJ
536          BLR    LJ
2882         FRA 1500m
509          EST    LJ
2449         BEL    PV
1022         EST    HJ
2530         USA    JT
2714         CUB    JT
1236         HUN  400m
238          BLR  100m
2518         USA    JT
1575         FRA 110mh
615          JPN    LJ
1144         GER    HJ
596          CAN    LJ
2477         HUN    JT
1046         GER    HJ
2501         FIN    DT
2176         KAZ    PV
Run Code Online (Sandbox Code Playgroud)

我想在我的数据框中创建一个新的因子向量eventtype,其中:

具有行100m400m110mh1500mevent可变成为分组为Runs; DT, …

r dplyr recode tidyverse

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

如何将多条件重新编码为-1/0/+ 1?

我的数据如下:

Name A B C
apple 1 -1 0
banana 2 -2 1
pear -3 0 1
Run Code Online (Sandbox Code Playgroud)

我想将所有正值替换为-1,将所有负值替换为+1,但保持0为0,我该如何实现?

r recode

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

将月份名称转换为 r 中的数字

我正在使用包含完整月份名称的数据:

months <- c("March",     "April",     "May",       "June",      "July",  "August",  "September")

Run Code Online (Sandbox Code Playgroud)

是否有将它们转换为数字的函数?

非常感谢

time date recode

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

标签 统计

recode ×10

r ×8

dplyr ×4

dataframe ×2

tidyverse ×2

apache-spark ×1

date ×1

loops ×1

na ×1

numpy ×1

python ×1

scala ×1

time ×1