【问题标题】:How to create and add multiple new variables into a dataset where the new variables are ased on the same condition如何在相同条件下创建新变量的数据集中创建多个新变量并将其添加到数据集中
【发布时间】:2020-08-11 19:14:52
【问题描述】:

假设我有以下数据框。我想要做的是创建带有前缀~new. 的新变量,例如new.factor1, new.factor2, 等。此外,这些新变量是基于相同条件从旧变量创建的。假设常见条件是 new.factor 变量将用 44 和 55 替换 4 和 5 ,其余部分与以前相同。我想以一种不必将新名称输入每个变量的代码的方式来实现这一点。这是我坚持的部分。我找到的解决方案需要被赋予变量名称,我希望解决方案代码从现有的变量名称中读取。

factor1 <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,8,9, 9, 10, 10)
factor2 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16,17, 18, 19, 20)
factor3 <- rnorm(20)
factor4 <- c(1:20)
dataset <- data.frame(factor1, factor2, factor3, factor4)

【问题讨论】:

  • 您好,您的问题有点不清楚。您是在谈论将 4 替换为 44 并将 5 替换为 55 作为变量值,还是您想要对变量名执行此操作?

标签: r if-statement variables dplyr


【解决方案1】:

我认为这会有所帮助:

library(tidyverse)
#Data
factor1 <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,8,9, 9, 10, 10)
factor2 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16,17, 18, 19, 20)
factor3 <- rnorm(20)
factor4 <- c(1:20)
dataset <- data.frame(factor1, factor2, factor3, factor4)
#Mutate
dataset %>%
  mutate(across(c(factor1:factor4),.fns = list(new = ~ ifelse(.==4, 44, ifelse(.==5,55, .))) ))

输出:

   factor1 factor2     factor3 factor4 factor1_new factor2_new factor3_new factor4_new
1        1       1  0.95562987       1           1           1  0.95562987           1
2        1       2 -1.69133138       2           1           2 -1.69133138           2
3        2       3  0.34527095       3           2           3  0.34527095           3
4        2       4 -0.38068329       4           2          44 -0.38068329          44
5        3       5 -0.88357788       5           3          55 -0.88357788          55
6        3       6  1.09936795       6           3           6  1.09936795           6
7        4       7 -1.44000399       7          44           7 -1.44000399           7
8        4       8 -1.44619802       8          44           8 -1.44619802           8
9        5       9 -0.37914030       9          55           9 -0.37914030           9
10       5      10 -0.38136916      10          55          10 -0.38136916          10
11       6      11  0.05036574      11           6          11  0.05036574          11
12       6      12 -0.61043789      12           6          12 -0.61043789          12
13       7      13 -0.21648782      13           7          13 -0.21648782          13
14       7      14 -0.35230171      14           7          14 -0.35230171          14
15       8      15  0.23007485      15           8          15  0.23007485          15
16       8      16  0.17146377      16           8          16  0.17146377          16
17       9      17  0.77488658      17           9          17  0.77488658          17
18       9      18  0.67676859      18           9          18  0.67676859          18
19      10      19  1.22292180      19          10          19  1.22292180          19
20      10      20  1.07251831      20          10          20  1.07251831          20

根据您的问题,您正在尝试创建替换某些值的新变量。前面的代码可以解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    相关资源
    最近更新 更多